gpt4 book ai didi

laravel - 尝试分配非对象的属性 - Laravel 5.2

转载 作者:行者123 更新时间:2023-12-01 03:35:47 26 4
gpt4 key购买 nike

问题:将我的 Laravel 4 代码转换为 Laravel 5.2。我正在移动和转换我的 View ,无法克服以下错误。

错误: IndexController.php 第 27 行中的 ErrorException:
尝试分配非对象的属性

调试信息:

  • 在 IndexController.php 第 27 行
  • 在 HandleExceptions->handleError('2', '尝试分配非对象的属性', 'C:\Apache24\B2B_Contracts\app\Http\Controllers\IndexController.php', '27', array('numberofpcs' = > object(additionalPCs), 'addtpcs' => array('0', '1', '2', '3', '4', '5', '6', '7', '8', ' 9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21' , '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', ' 34、'35'、'36'、'37'、'38'、'39'、'40'、'41'、'42'、'43'、'44'、'45'、'46' , '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', ' 59、'60'、'61'、'62'、'63'、'64'、'65'、'66'、'67'、'68'、'69'、'70'、'71' , '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', ' 84、'85'、'86'、'87'、'88'、'89'、'90'、'91'、'92'、'93'、'94'、'95'、'96' , '97', '98', '99', '100'))) 在 IndexController.php 第 27 行
  • 在 IndexController->index()

  • 请求:请协助找出错误出现的原因,如果可能,请详细解释如何防止它以及我在示例中做错了什么。

    备注:我曾经在 Laravel 4 上为数据库设置种子后收到类似的错误,但我能够刷新迁移并重新设置数据库,一切都会重新开始工作。这不适用于 Laravel 5 中的此错误。此代码适用于 L4。

    尝试:我在谷歌上读了很多书,并尝试了各种项目,如 php artisan clear-compiled、composer dump-autoload、php artisan optimize 都无济于事。我相信错误来自 $numberofpcs = new additionalPCs();但是我无法证实这一点。我还删除了我发送到 View 的所有变量,但错误仍然存​​在,所以它看起来像 $this->layout->content = View::make('index');

    IndexController.php
    <?php

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;
    use App\Library\additionalPCs;
    use App\Http\Requests;
    use App\Http\Controllers\Controller;
    use View;
    use App\Models\businesstype;
    use App\Models\contractterm;


    class IndexController extends BaseController
    {
    Protected $layout = 'master';
    /**
    * Display a listing of the resource.
    *
    * @return Response
    */
    public function index()
    {
    /** Wayne - 03-02-2014 - Moved for loop to a method within its own class. */
    $numberofpcs = new additionalPCs();
    $addtpcs=$numberofpcs->display();
    $this->layout->content = View::make('index')->with('addtpcs', $addtpcs)->with('businesstypelist', businesstype::dropdown())->with('contracttermlist',ContractTerm::dropdown());
    }
    }

    附加PCs.php
    <?php
    namespace App\Library;

    use App\Library\additionalComputer;

    class additionalPCs extends additionalComputer {
    public function display() {
    return $this->displayMenu();
    }
    }

    additionalComputer.php
    <?php
    namespace App\Library;
    /** Counts up the Number of Additional PC Options
    * and stores them into an array then sends them to the view.
    */
    class additionalComputer {
    protected function displayMenu() {
    $addtpcs= [];
    for ($i=0; $i <= 100; $i++) {
    $addtpcs[$i] = $i;
    }
    return $addtpcs;
    }

    }

    BaseController.php - (这只是为了表明我确实有一个用于 IndexController 的 BaseController.php 文件。我知道 L5 默认没有一个。)
    <?php
    namespace App\Http\Controllers;

    class BaseController extends Controller {

    /**
    * Setup the layout used by the controller.
    *
    * @return void
    */
    protected function setupLayout()
    {
    if ( ! is_null($this->layout))
    {
    $this->layout = View::make($this->layout);
    }
    }

    }

    最佳答案

    Laravel 5 中删除了 Controller 布局功能。因此,setupLayout()方法没有被调用,这意味着您的 layout属性只是字符串“master”。由于它只是一个字符串,当你做 $this->layout->content = ... ,您正在尝试分配非对象的属性。

    我相信如果您愿意,您应该能够重新添加它。在您的 BaseController ,您将需要覆盖 callAction方法到以前的方式:

    public function callAction($method, $parameters)
    {
    $this->setupLayout();

    $response = call_user_func_array(array($this, $method), $parameters);

    // If no response is returned from the controller action and a layout is being
    // used we will assume we want to just return the layout view as any nested
    // views were probably bound on this view during this controller actions.

    if (is_null($response) && ! is_null($this->layout)) {
    $response = $this->layout;
    }

    return $response;
    }

    关于laravel - 尝试分配非对象的属性 - Laravel 5.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35051748/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com