【问题标题】:Route::get with options and function not working properly in laravelRoute::get 的选项和功能在 laravel 中无法正常工作
【发布时间】:2019-05-17 20:34:03
【问题描述】:

我想使用带有路由选项、功能和位置的 Route::get。以下是我的路线代码:

Route::get('/view/{id}', array('uses' =>'BookController@view','as' => 'book.view'), function($id)
{
    die('hello');

})->where('id', '[A-Za-z]+');

所以当我调用 url view/4 时,它将打开 404 页面,当我调用 view/abc 时,它将运行控制器代码,但在这两种情况下,函数代码都不会执行。

我该如何解决这个问题?

【问题讨论】:

  • 能不能显示控制器逻辑
  • 控制器中现在没有任何内容。假设echo 'hi';
  • 抱歉刚刚注意到你为什么要附加控制器和回调函数。您应该使用回调或控制器
  • @Deepak 我打算在控制器中放一些代码,我不想在路由文件中添加太多长度,这就是为什么我不想将控制器代码放在路由文件中(如果可以的话避免)否则我需要做同样的事情。有什么办法可以做到吗?
  • 先去掉回调,测试一下

标签: php laravel laravel-5


【解决方案1】:

对于路由,您已经在 "id" 变量中设置了限制,它应该是字符串 "->where('id', '[A-Za-z]+');"

所以这里没有问题,如果你使用数字它应该得到你 404

对于控制器问题,你编码错误是因为你添加了控制器,同时你写了闭包,你只需要写一个。

所以试试这个

Route::get('/view/{id}', ['uses' =>'BookController@view','as' =>'book.view'])->where('id', '[A-Za-z]+');

使用数字试试这个

Route::get('/view/{id}', ['uses' =>'BookController@view','as' =>'book.view']);

谢谢

【讨论】:

  • 是的,这两个都可以,但我的要求不同。我想在where() 条件返回 false 时运行自定义代码。意味着在我目前的情况下,如果有人尝试使用整数,那么函数代码应该可以工作而不是 404 页面
  • @Dipen 你为什么不只使用 one 大小写,closurecontroller 并决定/检查$id 是数字还是字母?
  • @kerbholz 我的主要目标是尽可能避免路由中的控制器代码,如果我们可以在路由中使用 id 验证,我不想在控制器中这样做。因此,如果条件成功,我想重定向到另一个 url 或一些自定义代码,如果条件匹配,则执行控制器代码。
猜你喜欢
  • 1970-01-01
  • 2021-04-06
  • 2018-04-25
  • 2013-03-03
  • 2021-08-13
  • 2017-03-17
  • 2021-02-04
  • 2017-09-23
相关资源
最近更新 更多