【问题标题】:Laravel array_merge(): Argument #2 is not an array ErrorLaravel array_merge():参数 #2 不是数组错误
【发布时间】:2019-10-14 18:18:24
【问题描述】:

所以,我是 Laravel 的新手,目前正在学习技术日记 (https://www.techiediaries.com/php-laravel-crud-mysql-tutorial/) 中的教程

我真的没有任何使用 Laravel 或任何框架的经验,但我在 PHP 方面经验丰富,这是 Laravel 的第一次尝试。

我收到以下消息:

错误异常 array_merge(): 参数 #2 不是数组

当我查看http://localhost/laravel-first-crud-app/public/

Route::get('/', function () {
    return view('contacts.index', 'ContactController');
    //return 'Hello';
});

Route::resource('contacts', 'ContactController');
//Route::apiResource('contacts', 'ContactController'); //Not sure if this should be here or not

在 routes/web.php 但我在教程中看不到如何访问我创建的页面

通过我的contactController.php文件不确定这是否有帮助:

public function index()
    {
         $contacts = Contact::all();

         return view('contacts.index', compact('contacts'));
    }

它是带有 PHP7.1 的 Laravel 6

任何帮助将不胜感激

谢谢

【问题讨论】:

  • 我不知道 Laravel,但似乎 view() 的第二个参数需要是一个数组。注意你的一行compact('contacts') 创建了一个数组,你的另一行没有'ContactController'

标签: php laravel


【解决方案1】:

你的问题是这样的声明:

return view('contacts.index', 'ContactController');

view 函数将一个字符串作为第一个参数,将一个数组作为第二个参数,以便将数据传递给视图。不确定您将控制器名称字符串作为数据传递的意图。

如果没有数据要发送到视图,不要使用第二个参数:

return view('contacts.index');

Laravel 6.x Docs - Views - Passing Data to Views

教程中的路线:

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

Route::resource('contacts', 'ContactController');

【讨论】:

  • 我有一种感觉,就是那种说法,但我对 Laravel 及其语法不太熟悉。我猜第二个参数应该是一个数组,只是不确定如何更新代码才能工作。我不想放弃本教程并找到其他教程,因为我希望这个调试过程能帮助我学习 Laravel
  • 删除第二个参数,因为它不是数组...如果视图需要数据,则通过该参数传递它,如果没有,请不要使用它
  • 本教程希望从您的路由返回 welcome 视图,并且控制器的 index 方法处理返回您的 contacts.index 视图,因此您只需更新以匹配教程的路由
  • 我在教程中找不到代码,所以我想我已经从开始看它这么久了。从字面上检查了大约 6-7 次。
  • 谢谢。使用更新后的代码,我需要通过什么路径访问联系人,因为“public/”会显示欢迎页面?
【解决方案2】:

Laravel 使用这种语法将路由链接到控制器方法

我认为这就是你想要做的

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

顺便说一句,从 Laravel 5.5 开始……你也可以直接链接到视图而无需控制器并传递参数

Route::view('/', 'contacts.index', ['contacts' => App\Contact::all()]);

View Routes 希望这会有所帮助

【讨论】:

  • 谢谢,我已经在 Route::get('/', 'ContactController@index');到我的 web.php 文件,现在我得到一个“找不到驱动程序(SQL:select * from contacts)”错误,这意味着我正在进步..慢慢地
  • 是的,路由到达了控制器,现在你的数据库配置有问题
  • 那是个好消息,我看看能不能弄清楚数据库配置有什么问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-05
  • 1970-01-01
  • 2022-06-22
  • 1970-01-01
相关资源
最近更新 更多