【问题标题】:how to print project name on blade file Laravel 5.2如何在刀片文件 Laravel 5.2 上打印项目名称
【发布时间】:2018-03-26 06:25:22
【问题描述】:

我需要在子任务刀片文件上打印我的项目名称和任务名称。我的问题是,我有项目管理应用程序,它包含项目,一个项目有很多任务,一个任务有很多子任务。这是我的任务和子任务任务模型之间的关系

Task Model
    public function subtasks(){
        return $this->hasMany(Subtask::class);
    }



Subtask model
    public function task(){
        return $this->belongsTo(Task::class);
    }

我的子任务数据输入文件是:

subtask/form.blade.php

<h4>Add Sub Task</h4>
 <form class="form-vertical" role="form" method="post" action="{{ route('subtasks.form', ['projectId'=> $projectId, 'taskId'=>$taskId])}}">
     <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
     <input type="text" name="task_name" class="form-control" id="name" value="{{ old('task_name') ?: '' }}">
     @if ($errors->has('task_name'))
         <span class="help-block">{{ $errors->first('task_name') }}</span>
     @endif
     </div>
     <div class="form-group">
         <button type="submit" class="btn btn-info">Create Task</button>
     </div>
     <input type="hidden" name="_token" value="{{ csrf_token() }}">
 </form>

这是我的子任务控制器

public function store(Request $request,$projectId,$taskId)
    {
        $subtask = new Subtask;
        $subtask->subtask_name = $request->input('task_name');
        $subtask->task_id = $taskId;
        $subtask->project_id = $projectId;

        $subtask->save();
        //
    }

我需要在 subtask.blade.php 上打印我的项目名称和任务名称,我该怎么做? 已编辑 请看我的控制器展示

public function show($id)
    {
        $task = $subtask->task;
        $project = $task->project;
        return view('subtasks.form', ['subtask' => $subtask, 'task' => $task, 'project => $project]);
        //
    }

我应该如何在此处替换 show($id)

编辑子任务存储方法

 public function store(Request $request,$projectId,$taskId)
    {
        $subtask = new Subtask;
        $subtask->subtask_name = $request->input('task_name');
        $subtask->task_id = $taskId;
        $subtask->project_id = $projectId;

        $subtask->save();
        //
    }

子任务展示方法

public function show($id)
{
    $subtask = Subtask::findOrFail($id);
    $task = $subtask->task;
    $project = $task->project;
    return view('subtasks.form', ['subtask' => $subtask, 'task' => $task, 'project => $project]);
    //
}

【问题讨论】:

  • 不知道......
  • 能否粘贴子任务'show'方法
  • 我粘贴子任务'show'方法
  • 你有什么想法吗?
  • 我已经用我的开发环境中的测试解决方案编辑了我的答案

标签: php laravel-5


【解决方案1】:

编辑的答案

从迁移开始:

项目表

public function up()
{
    Schema::create('projects', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->text('description');
        $table->timestamps();
    });
}

任务表

public function up()
    {
        Schema::create('tasks', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('project_id')->index();
            $table->string('name');
            $table->text('description');
            $table->timestamps();
        });
    }

子任务表

public function up()
{
    Schema::create('subtasks', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('task_id')->index();
        $table->string('name');
        $table->string('status');
        $table->timestamps();
    });
}

然后是控制器:

子任务控制器

确保store 方法包含相关的任务ID。

public function store(Request $request,$projectId,$taskId)
    {
    $subtask = new Subtask();

    $subtask->name = 'Subtask A';
    $subtask->task_id = '1';
    $subtask->status = 'New';
    $subtask->save();
    }

TaskController 的想法相同,确保 project_id 与对象一起保存。

子任务show方法:

public function show($id)
    {
        $subtask = Subtask::findOrFail($id);
        $task = $subtask->task;
        $project = $task->project;

        return view('subtask-view', ['subtask' => $subtask, 'task' => $task, 'project' => $project]); 
}

那么在你看来:

{{ $subtask->name }} belongs to {{ $task->name }} which is a part of {{ $project->name }}

【讨论】:

  • 我的项目模型关系为 this public function tasks(){ return $this->hasMany('App\Task'); } 这是正确的吗?
  • 是的,抱歉 - 我刚刚进行了更正。您需要从 Task 模型到 Project 模型的关系。因此,在您的任务模型中,任务“属于”项目。换句话说,评论中上述关系的倒数。
  • 我作为 this 的关系 ** return $this->belongsTo('App\Project');** 你的方式是 ** return $this->belongsTo(Project::class);**两者是否相同?
  • 它们都是一样的,只是引用类的方式不同。结果是一样的。
  • 你有什么想法吗?
猜你喜欢
  • 2018-06-01
  • 2017-11-03
  • 1970-01-01
  • 2015-07-22
  • 1970-01-01
  • 2018-03-26
  • 2017-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多