拥有以下控制器:
class Admin_Images_Controller extends Admin_Controller
{
public $restful = true;
public function __construct()
{
parent::__construct();
}
public function get_index($id)
{
echo $id;
}
我不明白为什么当我访问它而没有ID的参数时它起作用,因为我收到错误missing parameter for ...
但是当我实际尝试在http://site/admin/images/12
传递参数时,我得到了一个404
错误。我错过了什么?
我尝试在我的路线中设置以下内容,但也没有成功:
Route::any('admin/images', array(
'as' => 'admin_images',
'uses' => 'admin.images@index',
));
//or
Route::any('admin/images/(:any)', array(
'as' => 'admin_images',
'uses' => 'admin.images@index',
));
它接触到我的通配符问题,90%发生在我的测试linux envirnonment(ubuntu)中。这是我正在使用的http://pastebin.com/f86A3Usx
我的routes.php答案 0 :(得分:2)
可能是你正在使用相同的别名(admin_images)并且还要检查你的订单 - 先把更具体的别名放在一边,然后再更加通用,如下:
Route::any('admin/images/(:any?)', array('uses' => 'admin.images@index'));
为了便于阅读,删除了别名。
答案 1 :(得分:1)
Route::get('admin/images/(:any)', 'admin.images@index');
答案 2 :(得分:1)
您应该通过传递默认值(如null / false / 1)
来使$ id参数成为可选参数public function get_index($id = null)
{
if($id){
echo $id;
}else{
echo "No ID given!";
}
}
并在你的路线中使用(:任何?)。
答案 3 :(得分:1)
更新路线:
Route::any('admin/images/(:any?)', array(
'as' => 'admin_images',
'uses' => 'admin.images@index',
));
您可以通过组合每个端点的路由来简化路由。添加“?”进入你的第一个参数,这意味着任何东西都可以存在,但不一定存在。因此, / admin / images 和 / admin / images / 1234 均受到保护。
更新了控制器:
class Admin_Images_Controller extends Admin_Controller
{
public $restful = true;
public function __construct()
{
parent::__construct();
}
public function get_index($id=null)
{
echo $id;
}
// ...
}
在方法参数中添加“= null”后,您现在可以处理此函数的两个路由。在您的方法中对“等于空”的简单检查应该可以帮助您完成覆盖每个事件的方法。