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'
]);