【问题标题】:how to include blade file in Laravel 5.2如何在 Laravel 5.2 中包含刀片文件
【发布时间】:2017-09-09 06:56:28
【问题描述】:

我正在开发 Laravel 应用程序,我需要在我的每个任务文件中添加关于每个项目的评论表单。 这是 cmets/form.blade.php

 <form class="form-vertical" role="form" method="post" action="{{ route('projects.comments.create', $project->id) }}">
        <div class="form-group{{ $errors->has('comments') ? ' has-error' : '' }}">
            <textarea name="comments" class="form-control" style="width:80%;" id="comment" rows="5" cols="5"></textarea>
            @if ($errors->has('comments'))
                <span class="help-block">{{ $errors->first('comments') }}</span>
            @endif
        </div>

        <div class="form-group">
            <button type="submit" class="btn btn-info">Add Comment</button>
        </div>
        <input type="hidden" name="_token" value="{{ csrf_token() }}">
    </form>

我将把这个表单文件包含在视图文件的任务文件夹中的 show.blade.php 文件中。 这是 show.blade.php

<h2>{{ $tasks->project->project_name }}</h2>
<hr>

{{$tasks->task_name}}
<hr>

{!!$tasks->body!!}

<hr>

@include('comments.form')

commentController.php

 public function postNewComment(Request $request, $id, Comment $comment)
    {
       $this->validate($request, [
            'comments'     => 'required|min:5',
        ]);

       $comment->comments       = $request->input('comments');
       $comment->project_id     = $id;
       $comment->user_id        = Auth::user()->id;
       $comment->save();

       return redirect()->back()->with('info', 'Comment posted successfully');
    }

routes.php

Route::post('projects/{projects}/comments', [
    'uses' => 'CommentsController@postNewComment',
    'as'   => 'projects.comments.create',
    'middleware' => ['auth']
]);

但终于得到了这个错误消息

Undefined variable: project (View: C:\Users\Nalaka\Desktop\acxian\resources\views\comments\form.blade.php)

如何解决这个问题?

【问题讨论】:

  • 在包含form.blade之前必须有$project
  • 尝试将$project-&gt;id改为$tasks-&gt;project-&gt;id

标签: php laravel-5


【解决方案1】:

您尚未在任何地方定义$project,但您有$tasks,您已经从show.blade.php 中获取项目名称,因此如果您在$tasks-&gt;project 数据中也有项目ID,那么您可以在视图中使用此变量更改 cmets/form.blade.php 中的form 标签如下:

<form class="form-vertical" role="form" method="post" action="{{ route('projects.comments.create', $tasks->project->id) }}">

【讨论】:

  • 我还有一个问题,如果我需要通过项目中的每个任务保存 cmets,我是否需要评论表中的任务列?
  • 是的,您需要在评论表中提供任务表的参考
  • 好的,现在我可以在我的 show.blade.php 文件中显示评论框,但是当我发布新评论时,它会生成像这样的新错误消息 Class App\Http\Controllers\CommentsController 不存在
  • 这里的错字CommentsController 需要在 routes.php 中是 CommentController
  • 您的控制器名称必须以大写字母开头 commentController.php 应该是 CommentController.php 并且控制器类名称应该是 CommentController
猜你喜欢
  • 2013-11-22
  • 1970-01-01
  • 2018-06-04
  • 1970-01-01
  • 1970-01-01
  • 2018-12-26
  • 1970-01-01
  • 2014-05-04
  • 1970-01-01
相关资源
最近更新 更多