Quero saber se é possível adicionar novos métodos a um controlador de recursos no Laravel e como você o faz.
Eu sei que esses métodos são o padrão (índice, criação, armazenamento, edição, atualização, destruição). Agora eu quero adicionar métodos e rotas adicionais ao mesmo controlador.
Isso é possível?
::resource
padrão, caso contrário, você receberá uma mensagem de erro "Nenhum resultado de consulta para o modelo".Route::get('foo/{id}', ...)
. Isso engole todas as rotas começando comfoo
e tendo um segmento adicional, incluindofoo/bar
.Acabei de fazer isso, para adicionar um método GET "delete".
Depois de criar seus arquivos, você só precisa adicionar
para 'provedores' em seu app / config.php
Edite o alias da rota neste mesmo arquivo:
mudando para
E verifique se esses arquivos estão sendo carregados automaticamente, eles devem estar em algum diretório que você possui no seu composer.json (seção "autoload").
Então você só precisa:
E este (veja a última linha) é o resultado se você executar
php artisan routes
:Esses são meus arquivos de origem:
ExtendedRouteFacade.pas
ExtendedRouter.pas
ExtendedRouteServiceProvider.pas
fonte
Sim, é possível ..
No meu caso, adiciono method: data para manipular a solicitação de /data.json no método HTTP POST.
Foi o que eu fiz.
Primeiro, estendemos o Illuminate \ Routing \ ResourceRegistrar para adicionar novos dados de método
Depois disso, faça seu novo ServiceProvider ou use AppServiceProvider .
Na inicialização do método , adicione este código:
então :
adicione à sua rota:
Verifique por
php artisan route:list
E você encontrará novo método 'dados'fonte
Tente isso. Coloque métodos extras, como getData () etc. etc. Isso funcionou para mim para manter o route.php limpo
fonte
Usando o Laravel> 5 Encontre o arquivo web.php na pasta routes e adicione seus métodos
Você pode usar route :: resource para rotear todos esses métodos, indexar, mostrar, armazenar, atualizar, destruir no seu controlador em uma linha
fonte
Basta adicionar um novo método e uma rota a esse método.
No seu controlador:
E nas suas rotas da web
Apenas certifique-se de que o método no controlador seja público.
fonte
Isso funciona muito bem também. Não há necessidade de adicionar mais rotas, basta usar o método show do controlador de recursos como este:
Eu uso o padrão para lançar a página de erro personalizada.
fonte