Mostrando postagens com marcador Laravel. Mostrar todas as postagens
Mostrando postagens com marcador Laravel. Mostrar todas as postagens

quinta-feira, 2 de janeiro de 2020

Configurando e instalando servidor ubuntu com PHP e Laravel

Como instalar facilmente o Laravel com o servidor da web Nginx no Ubuntu
Após a instalação, visite o site principal do Laravel (www.laravel.com)
para obter ajuda na criação de aplicativos .
Se você está procurando uma estrutura PHP simples e direta para projetar seu próximo aplicativo, você achará o Laravel útil.
Este breve tutorial mostrará como instalar a estrutura PHP do Laravel no Ubuntu 16.04 | 17.10 18.04 com suporte ao Nginx e PHP 7.2.

Etapa 1: instalar o Nginx

Neste tutorial, instalaremos o servidor da web Nginx
para fazer isso, execute os comandos abaixo 
sudo apt update
sudo apt install nginx

Após a instalação, os códigos abaixo podem ser usados ​​para parar, iniciar e ativar o serviço
Nginx para sempre iniciar com as inicializações do servidor.
sudo systemctl stop nginx.service
sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Etapa 2: Instale o PHP 7.2-FPM e módulos relacionados

O Laravel é baseado em PHP .. então você precisará instalá-lo.
Para instalar o PHP e os módulos relacionados, execute os comandos abaixo
sudo apt install php7.2-fpm php7.2-mbstring php7.2-xmlrpc php7.2-soap php7.2-gd php7.2-xml php7.2-cli php7.2-zip
Após instalar o PHP, execute os comandos abaixo para abrir o arquivo padrão PHP-FPM.

sudo nano /etc/php/7.2/fpm/php.ini


Em seguida, faça as alterações nas seguintes linhas abaixo no arquivo e salve.

memory_limit = 256M
upload_max_filesize = 64M
cgi.fix_pathinfo = 0


Etapa 3: Instale o Composer para baixar o Laravel

Execute os comandos abaixo para instalar o pacote do compositor e instalar
você deve ter o pacote curl instalado para que os comandos funcionem
caso contrário, basta executar o sudo apt install curl para instalá-lo…

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Etapa 5: configurar o Nginx

Por fim, configure o arquivo de configuração do site para o Laravel.
Este arquivo controlará como os usuários acessam o conteúdo do Laravel.
Execute os comandos abaixo para criar um novo arquivo de configuração chamado laravel
sudo nano /etc/nginx/sites-available/laravel
Em seguida, copie e cole o conteúdo abaixo no arquivo e salve-o.
Substitua a linha destacada pelo seu próprio nome de domínio e local da raiz do diretório.
server {
    listen 80;
    listen [::]:80;
    root /var/www/html/MyProject/public;
    index  index.php index.html index.htm;
    server_name  example.com;

    location / {
        try_files $uri $uri/ /index.php?$query_string;       
    }

 
    location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass             unix:/var/run/php/php7.2-fpm.sock;
      fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

}

Salve o arquivo e saia.

Etapa 5: ativar o Laravel

Após configurar o VirtualHost acima, ative-o executando os comandos abaixo
sudo ln -s /etc/nginx/sites-available/laravel /etc/nginx/sites-enabled/

Etapa 6: reinicie o Nginx

Para carregar todas as configurações acima, reinicie o Nginx executando os comandos abaixo.
sudo systemctl restart nginx.service
Em seguida, abra o navegador e navegue até o nome de domínio do servidor.
Você deve ver a página do Laravel.
http://example.com
Você deve ver a tela inicial padrão do Laravel ..
e está pronto para começar a criar seus aplicativos com base na estrutura PHP do Laravel…

quarta-feira, 1 de janeiro de 2020

Passando variável para todas as views no Laravel

Para passar uma variável via controller no Laravel você geralmente passa assim

return view('pagina')->with(['var' => '1']);

O problema é que quando você precisa passar uma variável em todas as views,ou em algumas views com um padrão, para isso existe o View Composer que é um recurso no Laravel que te permite compartilhar uma variável com uma ou mais Views.

Você pode utilizar o facade

View::share('var', '1' );

Colocando o código dentro do App\Providers\AppServiceProvider
ele será executado em toda a aplicação

public function boot(){
    View::share('var', '1' );
}

quinta-feira, 19 de dezembro de 2019

Organizando melhor os Models dentro do Laravel



Organizando melhor os Models dentro do Laravel

Muitas vezes me eu quero deixar a minha estrutura de projeto mais organizada e o Laravel deixa os Models meio soltos dentro do projeto.

Por padrão, os modelos estão localizados na pasta  App do aplicativo, o que pode se tornar uma bagunça se você estiver trabalhando em um aplicativo grande. 
Então, decidi organizar meus modelos dentro de App\Models

Atualizando o Model User

Para conseguir isso, a primeira coisa que temos que fazer é mover para a App/Models e atualizar o namespace de acordo.
Isso requer que você atualize todos os arquivos que referenciam a App\User. O primeiro é config/auth.php:

  'provider' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\User :: class, // alterado
        ],
    ],
então o config/services.php:
   
'stripe' => [
        'model' => App\Models\User:: class, // alterado
        'key' => env ('STRIPE_KEY'),
        'secret' => env ('STRIPE_SECRET'),
    ],
e por último, mas não menos importante, o database/factories/UserFactory.php

$factory->define(App\Models\User::classe, function(Faker $faker) {
        return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'email_verified_at' => now(),
        'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
        'remember_token' => Str::random(10),
    ];
});

Gerando Models daqui para frente


Agora, precisamos alterar para a geração de novos arquivos dentro da pasta Models 

Para corrigir isso, podemos estender o arquivo padrão ModelMakeCommand  
e criar um novo arquivo dentro de App\Console\Commands

<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Console\Commands\ModelMakeCommand;
class AppServiceProvider extends ServiceProvider
{
  /**
    * Bootstrap any application services.
    *
    * @return void
    */
  public function boot()
  {
      //
  }
  /**
    * Register any application services.
    *
    * @return void
    */
  public function register()
  {
      $this->app->extend('command.model.make', function ($command, $app) {
          return new ModelMakeCommand($app['files']);
      });
  }
}

Após isso é só criar uma ligação dentro do App\Providers\AppServiceProvider.php

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
\\Aqui tbm precisa adicionar
use App\Console\ModelMakeCommand\Command;

class AppServiceProvider extends ServiceProvider
{
    /**
    * Register any application services.
    *
    * @return void
    */
    public function register()
    {
        //
    }

    /**
    * Bootstrap any application services.
    *
    * @return void
    */
    public function boot()
    {
        //adicionar essa parte
        $this->app->extend('command.model.make', function ($command, $app) {
            return new ModelMakeCommand($app['files']);
        });
    }
}