微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

LARAVEL 8-无法将数据从控制器传递到视图->未定义的变量$ test

如何解决LARAVEL 8-无法将数据从控制器传递到视图->未定义的变量$ test

为什么每个人,我在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','index'])->name('home');
Route::get('/logout','\App\Http\Controllers\Auth\LoginController@logout');

解决方法

同一路由不能有多个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);   
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。