【问题标题】:Why do I always get undefined variable error even though I'm passing the variable correctly to the view?为什么即使我将变量正确传递给视图,我总是会收到未定义的变量错误?
【发布时间】: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()-&gt;with('var', $var)
  • return view('my_view'); 会导致问题,因为您需要将var 传递给它。
  • @Faesal 是的,varcompact() 内部传递。
  • 不,您在调用/add-var 路由时调用的addVar 方法中执行此操作,但是当您调用http://127.0.0.1:8000/ 时,您只需调用此方法return view('my_view'); 而不发送您的$var跨度>
  • @Faesal 哦,我明白你的意思了。无论如何我可以在 web.php 文件中做到这一点吗?就像 view()web.php 中第二个参数的动态占位符

标签: php laravel debugging


【解决方案1】:

如果你想让两条路线做同样的事情

web.php:

Route::get('/', [MyController::class, 'addVar']);

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>

【讨论】:

  • 那行不通。它只是根据网络选项卡发出大约 12 次 GET 请求,并出现 302 错误。
  • @sp92 我更新了答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
  • 2014-01-13
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2020-12-05
相关资源
最近更新 更多