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