2017-06-06 227 views
0

好吧,我有一个小问题。Laravel点击链接添加到网址

当用户点击一个链接时,它会转到网站/创建/业务这是很好,但如果没有做任何事情,但链接再次点击,无论出于何种原因它去网站/创建/业务/创建/业务。

<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}', '[email protected]'); 
Route::post('update', '[email protected]'); 
Route::get('create/business', '[email protected]'); 
Route::post('create', '[email protected]'); 

ProfileController可:

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); 
} 

BusinessController:

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); 
} 

回答

3

<a href="create/business/">必须<a href="/create/business/">来解决这个问题,因为你目前的链接是相对的,而不是绝对的,所以当你再次点击链接时,相同的参考将添加到当前网址的末尾。

无论如何,你应该会在Laravel单向链接,以避免在未来的其他问题:

Route::get('create/business', '[email protected]'); 

<a href="{{ url('create/business') }}"> 

Route::get('create/business', '[email protected]')->name('createBusiness'); 

<a href="{{ route('createBusiness') }}"> 

个人而言,我更喜欢第二个,所以如果我改变路线链接的链接仍然有效,但它需要在您的路由定义中添加name('yourRoute')

+0

如何对这个链接? Przemek

+0

@Przemek你不能在胡须内使用胡须,所以它应该是' id)}}”>'。我现在不确定,但我认为你应该使用第二个参数''