Как вызвать функцию контроллера внутри вида в laravel 5

В laravel 4 я просто использовал функцию

$varbl = App::make("ControllerName")->FunctionName($params); 

для вызова функции контроллера из моего шаблона balde (страница просмотра). Теперь я использую Laravel 5 для создания нового проекта, и я попробовал этот метод, чтобы вызвать функцию контроллера из моего шаблона клинка. Но он не работает и не показывает некоторые ошибки. Есть ли способ вызвать функцию контроллера на странице просмотра в Laravel 5?

Если у вас есть функция, которая используется в нескольких местах, вы должны определить ее в файле помощников, чтобы создать ее (может быть) в папке app / Http / Helpers и назовите ее helpers.php, укажите этот файл в блоке автозапуска ваш композитор.json следующим образом:

 "autoload": { "classmap": [ "database" ], "psr-4": { "App\\": "app/" }, "files": [ "app/Http/Helpers/helpers.php" ] }, 

запустите компоновщик dump-autoload, а затем вы можете вызвать эту функцию из любого места, пусть это будет представление контроллера или модель.

или если вам не нужно вводить помощников. Вы можете просто вызвать его из своего контроллера. Просто сделайте его static function . Создайте.

 public static function funtion_name($args) {} 

Вызов.

 \App\Http\Controllers\ControllerName::function_name($args) 

Если вам не нравится очень длинный код, вы можете просто сделать это

 ControllerName::function_name($args) 

но не забудьте вызвать его с верхней части страницы просмотра.

 use \App\Http\Controllers\ControllerName; 

Просто попробуйте это на ваш взгляд:

 {{ ControllerName::Functionname($params); }} 

ИЛИ

 <?php echo ControllerName::Functionname($params);?> 

См. Это: http://laravel.io/forum/03-06-2014-what-is-the-proper-way-to-call-controllers-from-the-view?page=1

В laravel 5 вы можете сделать это так

На ваш взгляд:

 <?php use App\Http\Controllers\ControllerName; echo ControllerName::functionName(); ?> 

ФункцияName должна иметь ключевое слово «static», например

Функция контроллера:

 public static function functionName() { return "Hello World!"; } 

Методы контроллеров не должны вызываться из представления. Наилучшие варианты – вызывать метод из метода, который возвращает объект вида, который содержит вывод, который вы затем можете эхо в представлении;

  public function bar() { $foo = $this->foo(); return view( 'my.view', compact( 'foo' ) ); } protected method foo() { return 'foobar'; } 

второй вариант добавления файла справки в файл compose.json

 "autoload": { "files": [ "app/helpers.php" ] }, 

выгрузите свою автозагрузку, и вы можете вызывать эти функции из любой точки вашего приложения

Для доступа к методу Контроллера со страницы просмотра вам необходимо указать полный путь этого контроллера на своей странице.

 use App\Http\Controllers\AdminAfterAuth; $admin_dtls = AdminAfterAuth::globAdmin(); 

Здесь AdminAfterAuth – это имя класса контроллера, а globAdmin – имя метода.

Теперь в контроллере объявите метод статически.

 public static function globAdmin(){ $admin_val = AdminLogin::where('id',session('admin_id'))->get(); return $admin_val; } 

Вот и все. Вы можете увидеть полное руководство

Мне нравится и нравится путь Khan Shahrukh , лучше создать файлы помощников со всеми вашими функциями, а затем добавить его в свой файл composer.json:

 "autoload": { "files": [ "app/Http/Helpers/helpers.php" ] }, 

Вы можете выбрать путь, который вам подходит, а затем создать дамп-автозагрузчик, чтобы он включал новый файл.

Для удобства использования и чистой работы после этого вы сможете активировать свою функцию в любом файле вида или части проекта: Controller, Model.

Если вы решили пойти с публичным статическим методом Не забудьте добавить эту строку в самый верх вашего представления:

 use \App\Http\Controllers\ControllerName; 

Фактически ниже должно работать согласно Laravel 5 :
Использование: App::make(ControllerName)->functionName($parameters);
Пример: App:make("TestController")->getUserInfo('user_id' => 9);

Пожалуйста, отправьте фактическую ошибку, которую вы получаете!