首页 > 解决方案 > LARAVEL 7,未定义的变量,无法将变量从控制器传递到视图

问题描述

我是 Laravel 的新手,我按照本教程制作了一个 CRUD:

https://appdividend.com/2020/03/13/laravel-7-crud-example-laravel-7-tutorial-step-by-step/

首先我是自己做的,然后我只是从 GitHub 上复制了代码,在这两种情况下我都进入了@foreach 中的变量:

Facade\Ignition\Exceptions\ViewException 未定义变量:coronacases

我搜索了一下并尝试了其他一些没有运气的解决方案,所以我开始了一个只有索引功能的新项目,以查看数据是否从控制器传递到视图。

这是我的代码,控制器:

// TestController


namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestController extends Controller
{

    public function index()
    {
        $name = 'hugo';

        return view('test', compact('name'));
    }

在控制器中测试的替代 sintaxys:

/***
* return view('/test', compact('name'));
* return view('name', ['name' => 'James']); with out $name = 'hugo'; earier.
* return view('test', $name]);
* return view('test')->with('name', $data);
* return view('test')->with('name', 'hugo'); with out $name = 'hugo'; earier.
* other solutions tryed here dosnt seems to change anything.
***/

路线:

Route::get('/', function () {
    return view('test');
});
Route::resource('test', 'TestController');

测试的替代路线:

/***
* Route::get('/test', 'TestController@index');
*
* Route::get('/', function () {
*    return view('test', ['name' => 'James']);
*}); //this one worked, but its not getting data from Controller, so its now what i need
*
*Route::get('/', function () {
*    return view('test', ['name' => $data]);
*}); //didnt work
*
***/ // I think that the problem is here, im having trouble understanding Routes at Laravel Docs

看法:

<html>
    <body>
        <h1>Hello, {{ $name }}</h1>
    </body>
</html>

还尝试过查看:

/***
* $data
* <?php echo $data ?>
* {{ $name ?? '' }}
***/

所有这些测试,我得到同样的错误,我错过了一些东西,我无法弄清楚......或者我在使用 Laravel 时遇到了一些问题,可以肯定的是我被卡住了。

补充资料:

php工匠路线:列表结果:

环境信息

Laravel 版本:7.16.1,Laravel 语言环境:en,Laravel 配置缓存:false,PHP 版本:7.4.6。

要求

网址 http://127.0.0.1:8000/ 方法 GET

标头

主机 127.0.0.1:8000 用户代理 Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0

我还尝试了 php artisan view:cache && php artisan view:clear

标签: phplaravel

解决方案


你已经定义了一个调用index你的函数,TestController但你还没有使用它。在您的路线中,您没有使用控制器和该功能,因此您收到此错误。
你的方法是这样的:路由>视图
应该是:路由>控制器>视图

所以改变你的路线:

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

Route::get('/', 'TestController@index');

干杯:)


推荐阅读