【发布时间】:2021-12-11 22:36:17
【问题描述】:
为什么我总是收到Undefined variable $var 错误?我正在尝试仅使用一个视图 (my_view.blade.php),但由于某种原因,当我导航到 http://127.0.0.1:8000/ 时,出现上述错误。
我的意图是使$var 变量在视图中可用,以便我可以在刀片文件中使用它。仅当用户输入文本并提交时才会填充此变量,但由于某种原因,我什至无法到达可以看到文本输入字段的部分,因为在加载视图时会抛出此文件。如果我摆脱 {{ $var }},一切都会按预期进行。
我一直认为我在将变量传递给视图方面做得正确。我做错了什么?
控制器:
public function addVar(Request $request) {
$var = $request->get('var');
Url::create([
'var' => $var
]);
view('my_view', compact('var'));
return Redirect::back();
}
web.php:
Route::get('/', function () {
return view('my_view');
});
Route::post('/add-var', [MyController::class, 'addVar'])->name('add-var');
my_view.blade.php:
{{ $var }}
<form method="POST" action="{{ route('add-var') }}">
{{csrf_field()}}
<input type="text" name="var" placeholder="Enter text"/>
<button type="submit" class="btn">Submit</button>
</form>
【问题讨论】:
-
试试这个:
return Redirect::back()->with('var', $var) -
return view('my_view');会导致问题,因为您需要将var传递给它。 -
@Faesal 是的,
var在compact()内部传递。 -
不,您在调用
/add-var路由时调用的addVar方法中执行此操作,但是当您调用http://127.0.0.1:8000/时,您只需调用此方法return view('my_view');而不发送您的$var跨度> -
@Faesal 哦,我明白你的意思了。无论如何我可以在 web.php 文件中做到这一点吗?就像
view()内web.php中第二个参数的动态占位符