如何修复 Laravel 5.2 中的“未定义变量:子任务”

Posted

技术标签:

【中文标题】如何修复 Laravel 5.2 中的“未定义变量:子任务”【英文标题】:how to fix "Undefined variable: subtask" in Laravel 5.2 【发布时间】:2018-06-07 07:54:12 【问题描述】:

需要编辑我的子任务表记录,SubtaskController

public function edit($projectId,$taskId,$subtaskId)
    
        $subtask = Subtask::where('project_id', $projectId)
                      ->where('task_id', $taskId)
                      ->where('id', $subtaskId)
                      ->first();
        return view('subtasks.edit')->withTask($subtask)->with('projectId', $projectId)->with('id',$subtaskId);
        //

编辑按钮的刀片文件链接是这个, 任务/index.blade.php

@foreach ($task->subtasks as $subtask)
    <ul>
    <li>
  <div>
    <div class="pull-right icons-align">

            <a href="/projects/ $project->id /tasks/ $task->id /subtasks/$subtask->id/edit" class="editInline"><i class="glyphicon glyphicon-pencil"></i></a>
          <a href="/projects/ $project->id /tasks/ $task->id /delete" class="editInline" onclick="return confirm('Are you sure to want to delete this record?')"><i class="glyphicon glyphicon-trash"></i></a>
        </div>
         $subtask->subtask_name 
        </div>

    @endforeach
    

路线是这样的

Route::get('projects/projects/tasks/tasks/subtasks/subtasks/edit', [
    'uses' => '\App\Http\Controllers\SubtasksController@edit',

]);

和edit.blade.php 子任务/edit.blade.php

<div class="col-lg-6">
        <form class="form-vertical" role="form" method="post" action=" url('projects/' .$projectId .'/tasks/' . $task->id.'/subtasks/'.$subtask->id) "> //this is line 9
            <div class="form-group $errors->has('name') ? ' has-error' : '' ">
                <input type="text" name="task_name" class="form-control" id="name" value="!! $subtask->subtask_name ?: '' !!">
                @if ($errors->has('name'))
                    <span class="help-block"> $errors->first('name') </span>
                @endif
            </div>

            <div class="form-group">
                <button type="submit" class="btn btn-info">Update Subtask</button>
            </div>
            <input type="hidden" name="_token" value=" csrf_token() ">
            !! method_field('PUT') !!
        </form>

但是当我点击刀片文件的编辑按钮时,得到了这个错误消息,

ErrorException in 9b021095a9def87aed61575bb51efc07798e08da.php line 9: Undefined variable: subtask (View: C:\Users\dnk\Desktop\ddd\resources\views\subtasks\edit.blade.php)

如何解决这个问题?

【问题讨论】:

使用@if 检查变量是否存在 【参考方案1】:

代替:

->withTask($subtask)

这样做:

->withSubtask($subtask)

edit 视图中更改:

$task->id

收件人:

$subtask->task->id

要使第二个修复工作,您还需要在Subtask 模型中正确定义关系:

public function task()

    return $this->belongsTo(Task::class);

【讨论】:

请清楚我应该在哪里更改这个 $subtask->task->id @DNK 形式为 action=" url('projects/' .$projectId .'/tasks/' . $task-&gt;id.'/subtasks/'.$subtask-&gt;id) "&gt; 现在出现此错误未定义变量:任务(视图:C:\Users\dnk\Desktop\ddd\resources\views\subtasks\edit.blade.php) @DNK 这就是为什么我要求你在视图中将$task 更改为$subtask-&gt;task 是的,我现在更改了编辑文件操作,这是 url('projects/' .$projectId .'/tasks/' . $task->id.'/subtasks/'。 $subtask->task->id) 可以吗?

以上是关于如何修复 Laravel 5.2 中的“未定义变量:子任务”的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 laravel 5.2 zizaco 委托:迁移类名验证?

如何修复自定义模块中的“未定义变量”

未定义变量:Blade Laravel 7.x中的横幅

尝试调用函数提交到 MySQL 时如何修复“未定义变量”

视图页面laravel中的未定义变量[关闭]

Laravel 7 组件中的未定义变量