给定资源控制器,在输入http://localhost:8000/my/8时执行哪一个?当我尝试这一切时,我得到的是空白。其他路线如index和create? Laravel如何决定在http://localhost:8000/my/8中执行哪条路线?
Route::resource('my','myController');
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class MyController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
echo 'index';
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
echo 'create';
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
echo 'show';
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
echo 'edit';
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
echo 'destroy';
}
}
路线:
| POST | my | my.store | App\Http\Controllers\myController@store | |
| | GET|HEAD | my | my.index | App\Http\Controllers\myController@index | |
| | GET|HEAD | my/create | my.create | App\Http\Controllers\myController@create | |
| | DELETE | my/{my} | my.destroy | App\Http\Controllers\myController@destroy | |
| | PUT|PATCH | my/{my} | my.update | App\Http\Controllers\myController@update | |
| | GET|HEAD | my/{my} | my.show | App\Http\Controllers\myController@show | |
| | GET|HEAD | my/{my}/edit | my.edit | App\Http\Controllers\myController@edit
答案 0 :(得分:1)
如果您已经设置了路线资源,laravel应该执行:
Route::get('my/{id}', 'myController@show'); // This will be called.
public function show($id)
{
echo 'show';
//
}
如果您运行此命令
php artisan routes:list
您可以查看所有申请路线和相应的操作。
Laravel根据请求类型选择适当的Controller方法。
如果您正在访问某个网页,则该网页是GET
类型。因此,laravel将寻找类似于您正在访问的路线。
在这种情况下,您正在访问网址example.com/my/8
。因此,laravel将寻找类似的路线结构。由于您已经定义了路线资源,因此laravel会点击匹配GET /my/{my}
。因此将调用相应的方法。
这不会调用create
或destroy
方法,因为您只是访问网址(GET)。因此,如果您发送创建网页POST
的请求,laravel将调用create
方法。同样,DELETE
会调用destroy
。
答案 1 :(得分:1)
如果您使用路线Route::resource('my','myController');
此网址http://localhost:8000/my/8
必须调用myController @ show