Php RESTful控制器的Laravel路由
具有以下控制器:Php RESTful控制器的Laravel路由,php,debugging,http-status-code-404,laravel,Php,Debugging,Http Status Code 404,Laravel,具有以下控制器: class Admin_Images_Controller extends Admin_Controller { public $restful = true; public function __construct() { parent::__construct(); } public function get_index($id) { echo $id; } 我不明白为什么当我在没
class Admin_Images_Controller extends Admin_Controller
{
public $restful = true;
public function __construct()
{
parent::__construct();
}
public function get_index($id)
{
echo $id;
}
我不明白为什么当我在没有ID参数的情况下访问它时,它会工作,因为我得到一个错误,上面写着:缺少…
的参数,但是当我实际尝试在传递一个参数时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环境(ubuntu)中。这是我目前正在使用的my routes.php,可能是您使用的是同一个别名(admin_图像),另外,请检查您的订单-将更具体的放在第一位,并在下订单时更加通用,如下所示:
Route::any('admin/images/(:any?)', array('uses' => 'admin.images@index'));
已删除别名,只是为了可读性。可能是您使用的是同一个别名(管理员图像),另外,请检查您的订单-先将更具体的别名放在首位,然后再往下放,如下所示:
Route::any('admin/images/(:any?)', array('uses' => 'admin.images@index'));
Route::get('admin/images/(:any)', 'admin.images@index');
已删除别名,只是为了可读性。您应该通过传递默认值(如null/false/1)使$id参数成为可选参数
Route::get('admin/images/(:any)', 'admin.images@index');
并在路由中使用(:any?)。您应该通过传递默认值(如null/false/1)使$id参数成为可选参数
并在路线中使用(:any?)。更新路线:
Route::any('admin/images/(:any?)', array(
'as' => 'admin_images',
'uses' => 'admin.images@index',
));
class Admin_Images_Controller extends Admin_Controller
{
public $restful = true;
public function __construct()
{
parent::__construct();
}
public function get_index($id=null)
{
echo $id;
}
// ...
}
您可以通过组合每个端点的路由来简化路由。通过将“?”添加到第一个参数中,这意味着任何东西都可以存在,但不必存在。因此/admin/images和/admin/images/1234都包含在内
更新控制器:
Route::any('admin/images/(:any?)', array(
'as' => 'admin_images',
'uses' => 'admin.images@index',
));
class Admin_Images_Controller extends Admin_Controller
{
public $restful = true;
public function __construct()
{
parent::__construct();
}
public function get_index($id=null)
{
echo $id;
}
// ...
}
在方法参数中添加“=null”后,您现在可以处理该函数中的两个路由。只需简单检查方法中的“equals null”,就可以很好地覆盖每个senario。更新路线:
Route::any('admin/images/(:any?)', array(
'as' => 'admin_images',
'uses' => 'admin.images@index',
));
class Admin_Images_Controller extends Admin_Controller
{
public $restful = true;
public function __construct()
{
parent::__construct();
}
public function get_index($id=null)
{
echo $id;
}
// ...
}
您可以通过组合每个端点的路由来简化路由。通过将“?”添加到第一个参数中,这意味着任何东西都可以存在,但不必存在。因此/admin/images和/admin/images/1234都包含在内
更新控制器:
Route::any('admin/images/(:any?)', array(
'as' => 'admin_images',
'uses' => 'admin.images@index',
));
class Admin_Images_Controller extends Admin_Controller
{
public $restful = true;
public function __construct()
{
parent::__construct();
}
public function get_index($id=null)
{
echo $id;
}
// ...
}
在方法参数中添加“=null”后,您现在可以处理该函数中的两个路由。在你的方法中简单地检查一下“等于零”就可以很好地覆盖每个塞纳里奥。有路由,没有路由,按顺序路由。。。它不会走的。。。任何其他方法(post_index、post_myass、put_fireonwate、get_image、get_alife)都可以,但不包括索引:|我忘记了问号。检查我的更新并尝试一下。这应该行得通-如果不行,就有别的事情发生了。有路线,没有路线,按顺序路线。。。它不会走的。。。任何其他方法(post_index、post_myass、put_fireonwate、get_image、get_alife)都可以,但不包括索引:|我忘记了问号。检查我的更新并尝试一下。这应该行得通——如果不行的话,还有别的事情要做。没有效果,而且我只在我的测试Linux环境(Ubuntu)中遇到通配符的问题。。。在我的电脑上工作正常。下面是我的完整routes.php,没有任何效果,我只在测试Linux环境(Ubuntu)中遇到通配符的问题。。。在我的电脑上工作正常。这是我的完整routes.php