【问题标题】:passing data from view to view laravel 5.3将数据从视图传递到视图 laravel 5.3
【发布时间】:2017-01-14 13:04:19
【问题描述】:

我有一个名为drivers.blade.php 的页面,其中我只显示数据库中的几个字段 我有一个view-more-link点击用户应该去driver-details

我在其中显示 driver 的所有详细信息,类似于产品和产品详细信息页面

我的drivers.blade.php

@foreach($drivers as $driver)

<div class="col s12 m6 l3">
<div class="card small card-driver">
    <div class="card-image">
        <img src="assets/images/profile-image-2.png" alt="">
    </div>
    <div class="card-content">
        <div class="card-details">
            <p>Name:</p><span>{{ $driver->first_name }} &nbsp; {{ $driver->last_name }}</span>
        </div>
        <div class="card-details">
            <p>Phone:</p><span>{{ $driver->phone_number }}</span>
        </div>
        <div class="card-details">
            <p>Address:</p>
            <span>
                {{ $driver->address_city_village }} &nbsp; {{ $driver->address_state }}
            </span>
        </div>
    </div>
    <div class="card-action">
        <a href="driver-details" class="waves-effect waves-light btn green">View Details</a> //onclick go to that perticular driver details by passinf id
    </div>
</div>
</div>

@endforeach

我的控制器是 DriverController.php

public function getDrivers() 
{
    $drivers = Driver::all();

    return view('drivers', compact('drivers'));
}

public function getDriverDetails($id) 
{
    $driver = Driver::find($id);

    if(! $driver) {
        return $this->respondNotFound();
    }

    return view('drivers-details', compact('driver'));

}

如果我转到http://localhost:8000/driver-details 页面,我会收到以下错误

Sorry, the page you are looking for could not be found.
NotFoundHttpException in RouteCollection.php line 161:

我的路线是

Route::resource('drivers', 'DriversController@getDrivers');
Route::resource('drivers-details', 'DriversController@getDriverDetails');

期待获得急需的帮助

谢谢

【问题讨论】:

    标签: php laravel model-view-controller view laravel-5.3


    【解决方案1】:

    Route::resource 仅用于 CRUD。如果您没有使用[index, create, store, show, edit, update, destroy] 方法,那么您不应该使用Route::resource,而是有许多其他方法,例如Route::getRoute::post 等。

    那是因为你在使用--

    Route::get('drivers-details', 'DriversController@getDriverDetails');
    

    并且请求http://localhost:8000/driver-details,它没有在路由中注册,如果你访问http://localhost:8000/drivers-details你不会得到错误。

    在您的控制器getDriverDetails($id) 中,您提供了一个参数,要使用它,您需要将它注册到您的路由中才能像这样使用它 --

    Route::get('drivers-details/{id}', 'DriversController@getDriverDetails');
    

    您还需要将 id 发送到 url 订单才能访问它 --

    <a href="/drivers-details/{{ $driver->id }}" class="waves-effect waves-light btn green">View Details</a>
    

    【讨论】:

      【解决方案2】:

      您正在尝试 http://localhost:8000/driver-details,而您的路线是 drivers-details

      【讨论】:

      • 但现在我在localhost:8000/driver-details ErrorException in DriversController.php line 142: Missing argument 1 for App\Http\Controllers\DriversController::getDriverDetails() 上遇到此错误,如果我添加驱动程序 ID localhost:8000/driver-details/1 我的视图将在没有 css 和 js 的情况下加载,我猜是因为 /1我如何将驱动程序的 ID 从驱动程序页面传递到驱动程序详细信息页面并根据该 ID 获取驱动程序详细信息谢谢
      • 你必须在路由中设置它。将您的路线更改为 Route::resource('drivers-details/{pid}', 'DriversController@getDriverDetails');并在控制器中在函数中添加一个参数。比如 getDriverDetails($pid)
      • 感谢您的宝贵时间,但我如何将驱动程序的 ID 从 driver 页面传递到 driver-details 页面并获取该页面的详细信息
      • 我在路由中引用了id 我收到此错误Route pattern "/driver-details/{id}/{{id}}" cannot reference variable name "id" more than once.
      • 仅添加一次驱动程序详细信息/{id}。如果有多个参数,则添加另一个但名称不同的参数
      【解决方案3】:

      试试这条路

      Route::resource('drivers-detail', 'DriversController@getDriverDetails');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-16
        • 2015-10-23
        • 1970-01-01
        相关资源
        最近更新 更多