从laravel方法显示一些视图[关闭]
Posted
技术标签:
【中文标题】从laravel方法显示一些视图[关闭]【英文标题】:show some view from laravel method [closed] 【发布时间】:2019-10-29 23:01:26 【问题描述】:我想在视图中显示我的内容,但它没有显示任何内容
public function myMethod(Request $request)
$this->showQuestion()
public function showQuestion($tester, $testerAnswers, $user)
$testerAnswerNum = $testerAnswers->count();
$questionIdsAnswered = $testerAnswers->pluck('question_id');
$question = UserAnswer::where("user_id", $tester->user_id)->whereNotIn('question_id', $questionIdsAnswered)->orderBy("created_at", "desc")->first();
$question->question->items;
$questionNum = UserAnswer::where("user_id", $tester->user_id)->count();
$userName = $user->name;
return view('create_answer.answer_a_question', compact('question', 'testerAnswerNum', 'questionNum', 'userName'));
和我的视图文件(create_answer.answer_a_question.blade.php):
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>پاسخ به سوالات</title>
<style>
.item:hover
background: #8BC34A;
.item
background: #eeeeee;
float: right;
width: 40%;
margin: 10px;
max-width: 200px;
button
background-color: Transparent;
background-repeat:no-repeat;
border: none;
cursor:pointer;
overflow: hidden;
outline:none;
p
text-align: center;
margin: 10px;
img
max-width: 150px;
max-height: 150px;
display: block;
margin-left: 0.1px;
button.selected
background:red;
</style>
</head>
<body>
<p>$testerAnswerNum+1/$questionNum</p>
<p>$userName." ".$question->tester_question_text</p>
@for($i=0;$i<sizeof($question->items);$i++)
@php
$item=$question->items[$i];
@endphp
<div class="item border border-secondary rounded" onclick="redirect('$item->id')" >
<img class="img-fluid" src="$item->image" >
<p class="d">$item->item_text</p>
</div>
@endfor
<hr >
<br>
<br>
<button onclick="reload()" style="background: #ffff;color: #3f9ae5;size: 10px;text-align: center">یک سوال دیگر</button>
<form id="form" action="route('store_question')" method="post">
@csrf
<input type="hidden" name="user_id" value="$user->id">
<input type="hidden" name="question_id" value="$question->id">
<input type="hidden" id="item_id" name="item_id" >
</form>
</body>
</html>
还有我的 UserAnswer 文件:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class UserAnswer extends Model
public function question()
return $this->belongsTo(question::class);
我的问题模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class question extends Model
public function items()
return $this->hasMany(Item::class);
【问题讨论】:
我会检查文件结构...检查视图文件的扩展名(应该是 .blade.php),它必须在 resources/views/create_answer 中 视图应该像resources/views/create_answer/answer_a_question.blade.php
@ceejayoz 和另一个用户都删除了此问题中为破坏问题质量过滤器而添加的材料,并恢复了两次。请不要这样做——可读性在这里很重要。谢谢!
(问题质量过滤器并不完美,但如果您发现无法发布问题,请添加更多描述文本 - 总是可以添加更多材料。)
不要将问题编辑到invalidate existing answers。
【参考方案1】:
您试图“跳过”question
关系以获取 items
。
所以只需从一个“未回答的答案”中选择question_id
,然后使用with('items')
获取问题。
也不清楚你是如何得到$tester, $testerAnswers, $user
的。
以下是如何解决您的问题的想法:
行动:
public function showQuestion($tester, $testerAnswers, $user)
$testerAnswerNum = $testerAnswers->count();
$questionIdsAnswered = $testerAnswers->pluck('question_id');
$unansweredOne = UserAnswer::where("user_id", $tester->user_id)
->whereNotIn('question_id', $questionIdsAnswered)
->orderBy("created_at", "desc")
->first(['question_id']);
$question = question::with('items')->find($unansweredOne->question_id);
$questionNum = UserAnswer::where("user_id", $tester->user_id)->count();
$userName = $user->name;
return view('answers.answer_a_question', compact('question', 'testerAnswerNum', 'questionNum', 'userName'));
public function myMethod(Request $request)
/*
here You get:
$tester
$testerAnswers
$user
to pass them as arguments of
method on next line
*/
return $this->showQuestion($tester, $testerAnswers, $user);
查看:
@foreach($question->items AS $item)
<div class="item border border-secondary rounded" onclick="redirect('$item->id')" >
<img class="img-fluid" src="$item->image" >
<p class="d">$item->item_text</p>
</div>
@endforeach
同时更改文件名
来自:create_answer.answer_a_question.blade.php
至:answer_a_question.blade.php
并将其放入文件夹中:resources/views/answers/
(如果不存在则创建)
请记住 laravel view
helper .
(点)表示 /
(目录分隔符)。
【讨论】:
你能告诉我是什么问题吗? @AliGhafari 这只是一个猜测,请阅读我的更新答案 感谢帮我解决问题,你可以看我自己的回答【参考方案2】:我发现了问题!您正在调用该函数,但没有返回任何内容。
在上面的问题中,myMethod()
和 myMethod()
的 showQuestion()
方法返回视图不要使用它,它可以在 myMethod()
中添加返回视图,如下所示:
public function myMethod(Request $request)
$this->showQuestion()
应该改为:
public function myMethod(Request $request)
return $this->showQuestion();
【讨论】:
这可以用一些缩进,关键是分号和美元符号。以上是关于从laravel方法显示一些视图[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
laravel-admin 关闭debug模式导致异常信息到页面的排查