Laravel 点击 link 添加到 url
Laravel clicking on link adds to url
好的我有个小问题
当用户点击 link 时,它会转到 website/create/business,这很好,但是如果什么都没做,但再次单击 link,它会转到 website/create/business /create/business 无论出于何种原因。
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
{{ Auth::user()->name }} <span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a href="profile/{{Auth::user()->id}}">Profile</a>
<a href="create/business/">Add Business</a>
<a href="{{ url('/logout') }}" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
Logout
</a>
<form id="logout-form" <a href="{{ url('home') }}" action="{{ url('/logout') }}" method="POST" style="display: none;">
{{ csrf_field() }}
</form>
</li>
</ul>
</li>
路线:
Route::get('profile/{user_id}', 'ProfileController@checkid');
Route::post('update', 'ProfileController@updateProfile');
Route::get('create/business', 'BusinessController@addBusiness');
Route::post('create', 'BusinessController@createBusiness');
配置文件控制器:
public function checkid($user_id) {
if (Auth::check())
{
$user_id = Auth::id();
return view('profile', [
'id' => $user_id
]);
}
}
function updateProfile(Request $request) {
$user = $request->user();
$twitter = $request->input('twitter');
$facebook = $request->input('facebook');
$instagram = $request->input('instagram');
$telephone = $request->input('telephone');
$user->twitter_personal = $twitter;
$user->facebook_personal = $facebook;
$user->instagram_personal = $instagram;
$user->telephone = $telephone;
$result = $user->save();
if($result) {
$message = 'success';
}else{
$message = 'error';
}
return redirect()->back()->withInput()->with('message', $message);
}
业务主管:
function addBusiness() {
return view('addBusiness');
}
function createBusiness(Request $request) {
$name = $request->input('name');
$type = $request->input('type');
$email = $request->input('email');
$user_id = Auth::id();
$business = new Business();
$business->name = $name;
$business->type = $type;
$business->email = $email;
$business->user_id = $user_id;
$business->save();
$address1 = $request->input('address1');
$address2 = $request->input('address2');
$town = $request->input('town');
$city = $request->input('city');
$postcode = $request->input('postcode');
$telephone = $request->input('telephone');
$address = new Address();
$address->firstline_address = $address1;
$address->secondline_address = $address2;
$address->town = $town;
$address->city = $city;
$address->postcode = $postcode;
$address->telephone = $telephone;
$address->save();
$result = $business->save();
$result2 = $address->save();
$business_id = $business->id;
$address_id = $address->id;
DB::table('business_address')->insert(array('business_id' => $business_id, 'address_id' => $address_id));
DB::table('user_business')->insert(array('user_id' => $user_id, 'business_id' => $business_id));
if($result && $result2) {
$message = 'success';
}else{
$message = 'error';
}
return redirect()->back()->withInput()->with('message', $message);
}
<a href="create/business/">
必须是<a href="/create/business/">
才能解决这个问题,因为你现在的link是相对的,不是绝对的,所以你再点的时候,在最后添加了同样的引用您目前的 URL.
无论如何,您应该以 Laravel 的方式生成 link,以避免将来出现其他问题:
Route::get('create/business', 'BusinessController@addBusiness');
<a href="{{ url('create/business') }}">
或
Route::get('create/business', 'BusinessController@addBusiness')->name('createBusiness');
<a href="{{ route('createBusiness') }}">
我个人更喜欢第二种,所以如果我更改路线 URL,link 仍然有效,但它需要在您的路线定义中添加 name('yourRoute')
。
尝试使用route()
功能。对于此示例:<a href="{{ route('my_route_name') }}">Add Business</a>
。当您的路线更改时,它会在整个应用程序中自动更改。
您可以这样命名您的路线:
Route::get('create/bussiness', [
'as' => 'my_route_name',
'uses' => 'BusinessController@createBusiness'
]);
好的我有个小问题
当用户点击 link 时,它会转到 website/create/business,这很好,但是如果什么都没做,但再次单击 link,它会转到 website/create/business /create/business 无论出于何种原因。
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
{{ Auth::user()->name }} <span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a href="profile/{{Auth::user()->id}}">Profile</a>
<a href="create/business/">Add Business</a>
<a href="{{ url('/logout') }}" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
Logout
</a>
<form id="logout-form" <a href="{{ url('home') }}" action="{{ url('/logout') }}" method="POST" style="display: none;">
{{ csrf_field() }}
</form>
</li>
</ul>
</li>
路线:
Route::get('profile/{user_id}', 'ProfileController@checkid');
Route::post('update', 'ProfileController@updateProfile');
Route::get('create/business', 'BusinessController@addBusiness');
Route::post('create', 'BusinessController@createBusiness');
配置文件控制器:
public function checkid($user_id) {
if (Auth::check())
{
$user_id = Auth::id();
return view('profile', [
'id' => $user_id
]);
}
}
function updateProfile(Request $request) {
$user = $request->user();
$twitter = $request->input('twitter');
$facebook = $request->input('facebook');
$instagram = $request->input('instagram');
$telephone = $request->input('telephone');
$user->twitter_personal = $twitter;
$user->facebook_personal = $facebook;
$user->instagram_personal = $instagram;
$user->telephone = $telephone;
$result = $user->save();
if($result) {
$message = 'success';
}else{
$message = 'error';
}
return redirect()->back()->withInput()->with('message', $message);
}
业务主管:
function addBusiness() {
return view('addBusiness');
}
function createBusiness(Request $request) {
$name = $request->input('name');
$type = $request->input('type');
$email = $request->input('email');
$user_id = Auth::id();
$business = new Business();
$business->name = $name;
$business->type = $type;
$business->email = $email;
$business->user_id = $user_id;
$business->save();
$address1 = $request->input('address1');
$address2 = $request->input('address2');
$town = $request->input('town');
$city = $request->input('city');
$postcode = $request->input('postcode');
$telephone = $request->input('telephone');
$address = new Address();
$address->firstline_address = $address1;
$address->secondline_address = $address2;
$address->town = $town;
$address->city = $city;
$address->postcode = $postcode;
$address->telephone = $telephone;
$address->save();
$result = $business->save();
$result2 = $address->save();
$business_id = $business->id;
$address_id = $address->id;
DB::table('business_address')->insert(array('business_id' => $business_id, 'address_id' => $address_id));
DB::table('user_business')->insert(array('user_id' => $user_id, 'business_id' => $business_id));
if($result && $result2) {
$message = 'success';
}else{
$message = 'error';
}
return redirect()->back()->withInput()->with('message', $message);
}
<a href="create/business/">
必须是<a href="/create/business/">
才能解决这个问题,因为你现在的link是相对的,不是绝对的,所以你再点的时候,在最后添加了同样的引用您目前的 URL.
无论如何,您应该以 Laravel 的方式生成 link,以避免将来出现其他问题:
Route::get('create/business', 'BusinessController@addBusiness');
<a href="{{ url('create/business') }}">
或
Route::get('create/business', 'BusinessController@addBusiness')->name('createBusiness');
<a href="{{ route('createBusiness') }}">
我个人更喜欢第二种,所以如果我更改路线 URL,link 仍然有效,但它需要在您的路线定义中添加 name('yourRoute')
。
尝试使用route()
功能。对于此示例:<a href="{{ route('my_route_name') }}">Add Business</a>
。当您的路线更改时,它会在整个应用程序中自动更改。
您可以这样命名您的路线:
Route::get('create/bussiness', [
'as' => 'my_route_name',
'uses' => 'BusinessController@createBusiness'
]);