Вопрос: Преобразование моего кода Laravel 4 в Laravel 5.2. Я собираюсь переместить и преобразовать свои взгляды и не могу пройти мимо следующей ошибки.Попытка присвоить собственность не объекта - Laravel 5.2
Ошибка: ErrorException в IndexController.php линии 27: Попытка присвоить свойство не-объекта
отладки Информация:
- в IndexController.php линии 27
- на HandleExceptions-> handleError ('2', 'Попытка назначить свойство не-объекта', 'C: \ Apache24 \ B2B_Contracts \ app \ Http \ Controllers \ IndexController.php', '27', array ('numberofpcs' => объект (объявление ditionalPCs), '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, '', '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-> индекс()
Запрос: Пожалуйста, помогите разобраться, почему возникает ошибка и подробно объясните, как предотвратить ее и что я делаю неправильно с примером, если это возможно.
Примечания: Я получал аналогичную ошибку на Laravel 4 после того, как я запустил базу данных, но я смог обновить миграцию и обновить базу данных, и все снова начнет работать. Это не работает с этой ошибкой в Laravel 5. Этот код работает на L4.
Попытки: Я читал много на Google и попробовал различные предметы, такие как PHP ремесленника четких скомпилированные, композитор свалка-автозагрузка, PHP ремесленник оптимизацию безрезультатно. Я считаю, что ошибка исходит от $ numberofpcs = new AdditionalPCs(); однако я не смог это подтвердить. Я также удалил все переменные, которые я отправляю в представление, и ошибка все еще сохраняется, поэтому она выглядела как $ 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());
}
}
additionalPCs.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 - (Это только здесь, чтобы показать, что у меня есть файл BaseController.php для IndexController Я знаю, что 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);
}
}
}
Я добавил этот код в BaseController, однако я получил следующую ошибку: FatalErrorException в IndexController.php строка 3: Заявление об объявлении пространства имен должно быть самым первым оператором или после любого объявления в сценарии. Я попытался переместить пространство имен App \ Http \ Controllers; справа после php, и он дает ту же ошибку для строки 1. – scrfix
Благодарим вас за то, что сообщила мне, что L5 больше не поддерживает функциональные возможности контроллера. Как я должен это делать? return view ('greeting') -> with ('name', 'Victoria'); как взято здесь: https://laravel.com/docs/5.2/views#basic-usage - Могу ли я сделать это с контроллера или возвращать любые просмотры с удаленного контроллера? – scrfix
Мне было немного, но кажется, что я могу изменить $ this-> layout-> content = View :: make ('index') -> с ('addtpcs', $ addtpcs) -> с ('businesstypelist' , businesstype :: dropdown()) -> with ('contracttermlist', ContractTerm :: dropdown()); для возврата view ('index') -> with ('addtpcs', $ addtpcs) -> с ('businesstypelist', businesstype :: dropdown()) -> с ('contracttermlist', ContractTerm :: dropdown()); и это приведет меня к следующей ошибке. Я не могу отметить выше, как правильный ответ, потому что по-прежнему возникает ошибка, когда я использую выше, так что любой другой, кто сталкивается с этим, будет иметь ту же ошибку, используя его. – scrfix