【问题标题】:LARAVEL 8 - cannot pass data from controller to view -> undefined variable $testLARAVEL 8 - 无法将数据从控制器传递到视图 -> 未定义的变量 $test
【发布时间】:2021-02-15 06:24:44
【问题描述】:

大家好,我面临一个问题,我在 SO 中看到了很多次,但我不明白为什么人们提供的解决方案都没有为我工作.. 我正在尝试在下拉菜单中打印我的数据库中的所有表(以便我可以选择一个表,然后用粗略的修改它)使用 web.php 作为路由、控制器和视图。 在您将在下面看到的示例中,我只是试图传递一个变量,而不是整个数据库

这是我的控制器代码:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\View;

class EditController extends Controller
{
   public function index(){
            $tables = 'test';
            return view('edit')->with('tables',$tables);
        }
    }

这是edit.blade.php的变量

<div class="card-body">
                        @if (session('status'))
                            <div class="alert alert-success" role="alert">
                                {{ session('status') }}
                            </div>
                        @endif

                        <div>
                            Select the table you want to edit
                        </div>

                            <div class="form-group row">
                                <label for="table_name" class="col-md-4 col-form-label text-md-right">Tables</label>

                                <div class="col-md-6" style="width: border-box">
                                    <SELECT id= "table_name" type="text" class="form-control @error('tables') is-invalid @enderror" name='table_name' style="width: 300px">


                                    
                                        <option> {{ $tables }}</option>


                                      

                                    </SELECT>
                                    @error('tables')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                    @enderror
                                </div>
                            </div>


                    </div>

最后,这是 web.php

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::get('/edit', [App\Http\Controllers\EditController::class, 'index']); // <-this is the controller
Route::get('/edit', [App\Http\Controllers\HomeController::class, 'openEditBlade'])->name('edit');
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('/logout', '\App\Http\Controllers\Auth\LoginController@logout');

【问题讨论】:

  • 在您的路线中,您有 2 个相同的 GET URI edit !!!
  • undefined variable $test ,但你定义 $tables
  • 对不起,很多复制粘贴错误,错误在$tables上

标签: php laravel routes controller laravel-blade


【解决方案1】:

你不能有多个 Route::get() 函数具有相同的路由。因此,如果您需要在控制器中调用任何额外的函数,请在控制器中执行。

Route::get('/edit', [App\Http\Controllers\EditController::class, 'index']);

在 EditController.php 中

public function index() {
   // run the codes
   // call other function.
   $this->openEditBlade();
   // return view
   return view('edit')->with('tables',$tables);   
}

【讨论】:

  • 好吧我的问题是,我没有意识到它被写了两次
猜你喜欢
  • 2017-06-06
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
  • 2022-08-18
  • 2017-09-03
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多