2014-01-16 4 views
1

Сообщения об ошибке я получил:

enter image description hereLaravel не принимает мой класс как класс

Моих расстановки:

я создал папку classes в app папке и созданные Alert.php внутри app\classes ,
В app\start\global.php код выглядит так:

ClassLoader::addDirectories(array(
    app_path().'/commands', 
    app_path().'/controllers', 
    app_path().'/models', 
    app_path().'/database/seeds', 
    app_path().'/classes', // This line is the one I've added. 
)); 

В composer.joson:

"autoload": { 
    "classmap": [ 
     "app/commands", 
     "app/controllers", 
     "app/models", 
     "app/database/migrations", 
     "app/database/seeds", 
     "app/tests/TestCase.php", 
     "app/classes" 
    ] 

После этого я побежал composer dump-autoload.
И я добавил 'Alert'=>'Alert' в aliases массив в app\config\app.php.
Мой класс в app\classes\Alert.php:

<?php 
class Alert { 
    static function new($type, $message){ 
     if(Session::has("alert_type") && Session::has("alert_message")) { 
      $alert_type = Session::get("alert_type"); 
      $alert_message = Session::get("alert_message"); 
     } else { 
      $alert_type = array(); 
      $alert_message = array(); 
     } 
     $alert_type[] = $type; 
     $alert_message[] = $message; 
     Session::flash("alert_type", $alert_type); 
     Session::flash("alert_message", $alert_message); 
    } 
} 

В filters.php:

Route::filter('auth', function() 
{ 
    if (Auth::guest()) { 
     $alert_type = "danger"; 
     $alert_message = "<strong>Error: </strong>You need to sign in before continue."; 
     Alert::new($alert_type, $alert_message); 
     return Redirect::intended('/'); 
    } 
}); 

ответ

3

new в PHP reserved keyword. Используйте другое имя для своего статического метода, и все будет в порядке.

+0

Да, вы правы, я изменил его, и теперь он работает. – Kai

Смежные вопросы