【问题标题】:how to fix Undefined variable in Laravel 5.2如何修复 Laravel 5.2 中的未定义变量
【发布时间】:2017-03-31 17:11:45
【问题描述】:

我需要更新一些记录,这是我刀片中的表单操作

<form class="form-vertical" role="form" method="post" action="/projects/{{ $project->id }}/collaborators/{{ $collaborator->user()->first()->id }}">

我的控制器

public function update(Request $request, $projectId, $collaboratorId)
 {
    $this->validate($request, [
            'status'  => 'required',
        ]);

        DB::table('permissions')
            ->where('project_id', $projectId)
            ->where('collaborator_id', $collaboratorId)
            ->update(['status' => $request->input('status')]);

        return redirect()->back()->with('info','Your Permission has been updated successfully');



 }

路线

Route::put('projects/{projects}/collaborators/{id}',['uses'=>'ProjectCollaboratorsController@update',]);

当点击更新按钮时产生以下错误

Undefined variable: project (View: C:\Users\Nalaka\Desktop\c\resources\views\collaborators\permissionedit.blade.php)

如何解决这个问题?

【问题讨论】:

  • 我没有看到你在这里尝试使用项目变量的位置。
  • 检查我的表单操作

标签: php laravel-5


【解决方案1】:

使用您的路线Route::put('projects/{projects}/collaborators/{id}',['uses'=&gt;'ProjectCollaboratorsController@update',]);,您需要发送一个 PUT 请求。您的表单发送一个 POST 请求。

通过Route::post 更改您的路线或使用一些javascript 发送一个带有ajax 的PUT 请求。

尝试一下,看看之后是否还有其他错误。 此外,如果有“未定义的变量”,请显示该变量周围的代码。

【讨论】:

  • 您的方法update进行重定向。它要去哪里?似乎那里缺少变量“项目”。您可以在视图中添加检查 @if(isset($project) Do stuff @endif 或修复再次发送此变量的方法。
  • 我已经在我的视图中有这个变量 @if(isset($permissions)) @foreach($permissions as $permission) 以及如何添加 @if(isset($project)
  • $project 变量是表单 action 中的变量,对吧?
  • 所以,{{ $project-&gt;id }} 可能会变成 {{ (isset($project-&gt;id) ? $project-&gt;id : '') }} 但我认为真正的问题在于,您的变量在 redirect()->back() 之后没有重新发送到视图。
猜你喜欢
  • 2018-06-07
  • 2016-04-05
  • 1970-01-01
  • 2017-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多