2016-05-11 4 views
0

Я имею проблему с определением переменных класса, например, когда валидация формы здесь исходный кодLaravel переменные класса локализации

class LoginFormRequest extends DefaultFormRequest 
{ 


    protected $rulesMessages = [ 
     'name' => [ 
      'required' => trans('messages.enter_username') 
     ], 
     'password' => [ 
      'required' => trans('messages.enter_password') 
     ] 
    ]; 

} 

возвращение ошибка «ошибка синтаксиса, неожиданный„(“, ожидая«] »

ответ

1

Попробуйте переместить их в метод __construct.

public function __construct() 
{ 
    $this -> rulesMessages = [ 
     'name' => [ 
      'required' => trans('messages.enter_username') 
     ], 
     'password' => [ 
      'required' => trans('messages.enter_password') 
     ] 
    ]; 
} 
+2

спасибо это было полезно, но с некоторой коррекцией здесь есть код защищенные $ rulesMessages; функция __construct общественности() { $ this-> rulesMessages = [ 'имя' => [ 'требуется' => транс ('messages.enter_username') ], 'пароль' => [ «требуется '=> trans (' messages.enter_password ') ] ]; } – Safouen

+0

Извините, да - не нужно было просто скопировать/вставить;) –

1

Любое значение, что любое свойство класса разрешено быть инициализирован до должен быть постоянным (я не имею в виду само свойство, я имею в виду данные, которые вы пытаетесь инициализировать). Все это означает, что все, что бы это ни было, должно быть известно во время компиляции, а не во время выполнения, поэтому оно не может зависеть от какого-либо другого фактически исполняемого кода до того, как сможет извлечь значение, которое вы пытаетесь инициализировать. Вот почему это ошибка компилятора (синтаксиса), а не ошибка времени выполнения. Соответствующая цитата из manual:

Это заявление может включать в себя инициализацию, но инициализация должна быть постоянной величиной - то есть, он должен быть в состоянии оценить во время компиляции и не должна зависеть от времени выполнения информацию для оценки.

Все допустимая является следующей инициализацией класса недвижимости:

class One 
{ 
    protected $one = 'One'; 
} 

class Two 
{ 
    protected $two = 2; 
} 

class Three 
{ 
    protected $three = [ 
     1 => 'one', 
     2 => 'two' 
    ]; 
} 

// We can use constants defined using const keyword, because they are 
// evaluated at compile time. See http://stackoverflow.com/a/3193704/697370 
const FOUR_CONST = 4; 
class Four 
{ 
    protected $four = FOUR_CONST; 
} 

Ниже приведено недостоверные инициализации класса недвижимости:

class BadOne 
{ 
    protected $one = foo(); 
} 

$IamAboolean = false; 
class BadTwo 
{ 
    protected $two = $IamAboolean ? false : true; 
} 

class BadThree 
{ 
    protected $three = 5 + 4; 
} 
Смежные вопросы