【问题标题】:Laravel 4: Routing based on URILaravel 4:基于 URI 的路由
【发布时间】:2014-07-09 23:32:50
【问题描述】:

伙计们,

我正在尝试做一些简单的事情。例如,如果在我的设置导航中看起来像这样:

http://localhost/settings/   
http://localhost/settings/general
http://localhost/settings/message
http://localhost/settings/users

这是否有可能让我的路由器知道当它看到设置/用户时,我希望它转到 SettingsController@users?和 settings/general 去 SettingsController@general

问题是,我不想在 routes.php 中写下每个网址,例如:

Route::any("settings/users", array("as" => "users", "uses" => "SettingsController@users"));
Route::any("settings/general", array("as" => "general", "uses" => "SettingsController@general"));

这有可能吗?

【问题讨论】:

    标签: laravel laravel-4 uri laravel-routing


    【解决方案1】:

    你需要在你的 routes.php 中使用路由控制器

    Route::controller('settings', 'SettingsController');
    

    并在您的 SettingsController 中定义以下方法。

    class SettingsController extends BaseController {
    
        //URL : http://localhost/settings
        public function getIndex()
        {
            echo 'Index Method';
    
        }
    
        //URL : http://localhost/settings/message
        public function getMessage()
        {
            echo 'Message Method';
        }
    }
    

    您必须使用“get”前缀并以大写字符开头。更多信息请查看http://laravel.com/docs/controllers#restful-controllers

    【讨论】:

    • 感谢穆哈雷姆!现在完美运行。
    • 嗨@Muharrem,使用这种方法后我遇到了一个挑战。使用与上述解决方案相同的概念,当我向控制器发送 ajax 请求时,出现 404 错误。但是当我在浏览器中输入该网址时,它可以工作。例如,我向localhost/abc/settings/user_status 发送ajax 请求。其中 user_status 是设置控制器中的一种方法。这使用 ajax 会产生 404 错误,但直接放在浏览器中时可以工作。考虑到这个 Settings 控制器还有其他 ajax 不调用的方法,我该如何编写我的路由和控制器呢?感谢您的宝贵时间!
    • 嗨@Tochie。我认为原因是您的 ajax 请求类型。如果问题是,有两种解决方案您可以尝试使用“GET”更改 ajax 类型(更改标头或 jquery 方法类型),或者您可以使用 post 更改路由控制器前缀,例如:function postMessage().. 否则请发给我你的 ajax 代码。
    猜你喜欢
    • 2014-10-24
    • 1970-01-01
    • 2020-03-07
    • 2014-09-07
    • 1970-01-01
    • 2017-03-12
    • 2013-01-15
    • 1970-01-01
    • 2013-10-16
    相关资源
    最近更新 更多