duanping1920 2014-12-07 13:39
浏览 54
已采纳

在Laravel 5中将路由器注入控制器方法

Does anyone know why can't one use controller method injection in Laravel 5 to make the $router singleton available inside a controllers method, like in the code below?

use Illuminate\Routing\Router;

class WelcomeController extends Controller {
    // ...
    public function test($name = 'default var value', Router $router)
    {
        // stuff like taking the {name} part of /say-hello-to/{name?}
        // ...using $router->input('name') for example
        // ...assuming a route like: Route::get('say-hello-to/{name?}', 'WelcomeController@test') 
    }
}

An alternative way to get the same thing (idiomatic access to an url part inside a controller method) is useful, but I've already thought of a way to do this and I'm mainly interested in why this doesn't just work, as what I'm trying to get is a deeper understanding of how Laravel works and what advanced patterns can one emply when working with it.

  • 写回答

1条回答 默认 最新

  • douyan4243 2014-12-07 14:03
    关注

    OK, I first thought about deleting this after I figured out the answer myself in ~5min, but then again, maybe it's better to write this for others to be able to google:

    When combining optional URL arguments (like 'test/{name?}') with controller method injection, always put the injected parameters before the ones with default values in the method declaration, otherwise you will end up staring at some pretty confusing errors when accessing the URL variant without the optional parameter.

    So, in the example above, it should have been:

    public function test(Router $router, $name = 'default var value')

    ...instead of:

    public function test($name = 'default var value', Router $router)

    And, btw, if someone more experienced with Laravel than me comes across this, please comment if you think this is a Laravel 5 bug that should be reported to the developers, or if you think this is the intended behavior for such situations.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀