Laravel - 如何在溃败时将固定值从固定的 url 传递给控制器
Laravel - How to pass a fixed value to controller from a fixed url on rout
如果我的 url 是 user/new,我想将 ID“0”传递给控制器,我如何在 laravel 中的 route.php 上执行此操作?
我是这么想的,没想到这么简单。
Route::get('user/new','UserController@edit', ['id'=>'0']);
Route::get('user/edit/{id}','UserController@edit');
使用普通的 .htaccess 我会做这样的事情:
RewriteRule ^user/new /www/user/edit.php?id=0 [L,QSA]
RewriteRule ^user/(.*) /www/user/edit.php?id= [L,QSA]
我需要中间件吗?有更简单的方法吗?
我不确定你为什么要这样做,但你可以在你的控制器中做这样的事情:
function newuser()
{
return $this->edit(0);
}
function edit($id)
{
// Do stuff
}
一种方法是在您的路线中使用闭包,如下所示:
Route::get('user/new', function() {
return App::make('UserController')->edit(0);
});
但是 Laravel 方法是使用 RESTful resource controllers,它会为您创建、编辑和删除路由:
Route::resource('user', 'UserController');
这在语义上很奇怪,创建一个具有 edit
函数的用户,无论如何...
为什么不使用 php 默认参数值?
// UserController.php
public function edit($id = 0) // NOTICE THIS
{
// your id is zero if none passed (when /new is called)
}
您已经存在的 edit
不会改变,您不必更改路线。
如果我的 url 是 user/new,我想将 ID“0”传递给控制器,我如何在 laravel 中的 route.php 上执行此操作?
我是这么想的,没想到这么简单。
Route::get('user/new','UserController@edit', ['id'=>'0']);
Route::get('user/edit/{id}','UserController@edit');
使用普通的 .htaccess 我会做这样的事情:
RewriteRule ^user/new /www/user/edit.php?id=0 [L,QSA]
RewriteRule ^user/(.*) /www/user/edit.php?id= [L,QSA]
我需要中间件吗?有更简单的方法吗?
我不确定你为什么要这样做,但你可以在你的控制器中做这样的事情:
function newuser()
{
return $this->edit(0);
}
function edit($id)
{
// Do stuff
}
一种方法是在您的路线中使用闭包,如下所示:
Route::get('user/new', function() {
return App::make('UserController')->edit(0);
});
但是 Laravel 方法是使用 RESTful resource controllers,它会为您创建、编辑和删除路由:
Route::resource('user', 'UserController');
这在语义上很奇怪,创建一个具有 edit
函数的用户,无论如何...
为什么不使用 php 默认参数值?
// UserController.php
public function edit($id = 0) // NOTICE THIS
{
// your id is zero if none passed (when /new is called)
}
您已经存在的 edit
不会改变,您不必更改路线。