带有可选参数和 ajax 调用的 Laravel 路由
Posted
技术标签:
【中文标题】带有可选参数和 ajax 调用的 Laravel 路由【英文标题】:Laravel routes with optional parameters and ajax call 【发布时间】:2015-02-07 21:35:16 【问题描述】:我正在处理用户注册页面,但遇到了以下问题。我对新注册(id 将为空)和修改(id 将被传递)使用相同的视图。
此外,我对视图进行了 ajax 调用以填充城市。
这些是我的路线。
Route::get('UserRegistration/uid?', 'UserRegistrationController@Page_Load');
Route::get('UserRegistration/getCityByID', 'UserRegistrationController@getCityByID');
public function Page_Load($uid = null)
//code
这是我的 ajax 网址:
URL::route('UserRegistration/getStateByID')
当进行 ajax 调用时(http://example.com/UserRegistration/getStateByID?id=1),它调用第一个路由而不是第二个。但是,如果我删除第一条路由中的可选参数 (uid?),一切都会完美运行。
任何意见将不胜感激。
【问题讨论】:
Routes + RESTful 关键字必须是唯一的,我认为。例如,如果 -- 我知道你会尽一切努力避免这种情况 --uid=getCityByID
,会发生什么? 在定义路线时绝不应该出现这种歧义。在像您这样的情况下,可能会切换路线的顺序,因为第二个更具体比第一个。
谢谢@PeterKA。尽管我有逻辑将它们过滤掉,但我在路由中没有注意它。
【参考方案1】:
通配符应始终排在最后:
Route::get('UserRegistration/getCityByID', 'UserRegistrationController@getCityByID');
Route::get('UserRegistration/uid?', 'UserRegistrationController@Page_Load');
echo URL::to('UserRegistration/getStateByID');
【讨论】:
非常感谢。我刚刚忽略了通配符的性质。这样就解决了问题。以上是关于带有可选参数和 ajax 调用的 Laravel 路由的主要内容,如果未能解决你的问题,请参考以下文章
使用 PyObject_CallMethod 调用带有可选参数的函数