Olá Pessoal,

Hoje irei mostrar como deve ser feita a criação de páginas para a loja. Irei utilizar no exemplo o módulo base criado anteriormente. Então, vamos nessa?

Primeiro iremos criar um arquivo de rotas. Então dentro da pasta src do módulo, criaremos uma pasta chamada Http. Dentro dessa pasta criaremos o arquivo de rotas chamado routes.php. A estrutura ficará assim:

Nesse arquivo, definiremos uma rota, como se estivessemos definindo no Laravel. No exemplo iremos criar uma rota chamada hello-world. Insira o seguinte código no arquivo:

Route::group(['middleware' => ['web', 'locale', 'theme', 'currency']], function () {
    Route::get('/hello-world', 'VendorName\PackageName\Http\Controllers\Shop\HelloWorldController@index')->name('helloworld.shop.index');
});

Como podemos perceber na imagem acima, existe alguns middlewares que devem ser passados para que o front da loja seja exibido corretamente. Se os mesmos não forem passados, a url do módulo abre com o layout quebrado.

Após cirar o arquivo de rotas, vamos criar o Controller responsável por essa rota. Para isso dentro da pasta Http, crie uma pasta chamada Controllers, e dentro dela é possível inserir os controllers do módulo. Mas para fins de organização, Vamos criar uma pasta pasta chamada Shop. Nela ficará todos os controllers do "frontend" da loja.

Dentro da pasta Shop, criei um arquivo com o nome HelloWorldController. A estrutura do módulo ficará assim:

Abra o arquivo HelloWorldController e adicione o seguinte código:

<?php
namespace VendorName\PackageName\Http\Controllers\Shop;

use App\Http\Controllers\Controller;

class HelloWorldController extends Controller
{
    public function index()
    {
        return view('helloworld::shop.helloworld');
    }
}

Agora iremos criar o arquivo de visualização. Para isso, crie na pasta src do módulo, a seguinte estrtura de pasta: Resources/views/shop, e dentro da pasta shop crie um arquivo com o nome helloworld.blade.php, e insira o seguinte conteúdo:

@extends('shop::layouts.master')

@section('page_title')
    Hello World
@endsection

@section('content-wrapper')
    <h1>Hello World</h1>
@stop

Ao final do processo, você deverá ter a seguinte estrutura:

Após criarmos toda a estrutura, precisamos informar ao bagisto, aonde procurar os arquivos de rotas, controllers e views do módulo.

Para isso, abra o arquivo PackageNameServiceProvier, e adione o seguinte código a função boot:

include __DIR__ . '/../Http/routes.php';
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'helloworld');

Na primeira linha adicionamos o nosso arquivo de rotas para que o bagisto consiga encontrar as rotas do módulo. E na segunda linha, informamos o caminho das views do módulo e damos a esse caminho um apelido de helloworld. Ou seja, toda vez que chamarmos helloworld:: estamos nos referindo ao caminho VendorName/PackageName/src/Resources/views

Feito isso, ao acessar a url /hello-world, você verá a seguinte tela:

Com isso, terminanos esse tutorial de como crair uma página customizada na loja.

Caso desejar o módulo feito nesse tutorial está disponível em:

https://github.com/luancschmitz/bagisto-modulo-base/tree/2.0

Até o próxima pessoal!!