这些是我遇到问题的路线
获取特定城市注册地点列表的路由
例如: http://localhost:8000/London , http://localhost:8000/London/Restaurants
Route::group(['namespace' => 'Page'], function() {
Route::group(['prefix' => '{city}', 'where' => ['city' => '[\w\d]+']], function() {
Route::get('/', 'CityPageController@showCityPage')->name('cityPage');
});
});
Run Code Online (Sandbox Code Playgroud)
获取特定用户个人资料及其详细信息(例如评论、照片等)的路由。
例如: http://localhost:8000/John、http://localhost:8000/John/reviews、http://localhost:8000/John/photos
Route::group(['namespace' => 'User'], function() {
Route::group(['middleware' => 'verified'], function() {
Route::group(['prefix' => '{username}', 'where' => ['username' => '[\w\d]+']], function() {
Route::get('/', 'ProfileController@showProfilePage')->name('profilePage');
Route::get('/reviews', 'ReviewController@showReviewPage')->name('reviewPage');
Route::get('/photos', 'ImageController@showPhotoPage')->name('photoPage');
});
});
});
Run Code Online (Sandbox Code Playgroud)
问题是这两条路线不能同时工作。
位于另一条路线之上的路线优先于另一条路线。
如何解决这个路由问题。
编辑
我知道有一种方法可以实现此功能,但我不知道如何实现。任何帮助表示赞赏。
我正在学习 Laravel,我想使用前缀对一些路由进行分组并命名每个路由,所以我得到了这样的东西
Route::prefix('customers')->group(
function(){
Route::get('/', 'CustomerController@index')->name('customers.index');
Route::get('/create', 'CustomerController@create')->name('customers.create');
Route::post('/', 'CustomerController@store')->name('customers.store');
});
Run Code Online (Sandbox Code Playgroud)
我想避免写“客户”。在每条路线名称中。
我尝试过使用组和名称,但它无法识别路线名称前缀“客户”。
Route::group(['prefix' => 'customers', 'name' => 'customers.'],
function(){
Route::get('/', 'CustomerController@index')->name('index');
Route::get('/create', 'CustomerController@create')->name('create');
Route::post('/', 'CustomerController@store')->name('store');
});
Run Code Online (Sandbox Code Playgroud)
我发现的另一种方法是使用as和use,但它似乎有很多代码,而且看起来不太干净,实际上第一个看起来像是一种更干净的方法。
Route::group([
'prefix' => 'customers',
'as' => 'customers.'
],
function(){
Route::get('/', ['as'=>'index', 'uses' => 'CustomerController@index']);
Route::get('/create', ['as'=>'create', 'uses' => 'CustomerController@create']);
Route::post('/', ['as'=>'store', 'uses' => 'CustomerController@store']);
});
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?
我正在将表单数据插入数据库,成功提交后我想重定向到潜在客户页面。
HTML 表单:
<form method="post" action="{{url('lead-message')}}">
{{csrf_field()}}
<input type="hidden" name="lead_id" value="{{$leads->id}}">
<div class="form-group">
<label for="exampleFormControlTextarea1">Type your message*</label>
<textarea class="form-control" name="lead_message" id="lead_message" rows="3" value="" required></textarea>
</div>
<button type="submit" class="btn btn-primary">Send Message</button>
</form>
Run Code Online (Sandbox Code Playgroud)
路线:
Route::group( ['middleware' => ['auth', 'phoneverified']], function() {
Route::resource('leads', 'LeadsController');
});
Run Code Online (Sandbox Code Playgroud)
控制器:
public function leadMessage (Request $request) {
$validate = $request->validate([
'lead_message' => 'required',
]);
$storeMessage = new LeadMessage;
$storeMessage->lead_id = $request->lead_id;
$storeMessage->message = $request->lead_message;
$storeMessage->save();
Session::flush('success', 'Message sends successfuly!');
return redirect('leads/'.$request->lead_id);
}
Run Code Online (Sandbox Code Playgroud)
但是成功提交后,它重定向到登录页面而不是潜在客户页面,当我再次登录时,它直接将我重定向到潜在客户页面。
我不知道我哪里出错了。我将不胜感激在这方面的任何帮助。