Можно ли вызвать метод с одного контроллера внутри другого контроллера в Laravel 5 (независимо от метода http, используемого для доступа к каждому методу)?Вызов метода с одного контроллера внутри другого
ответ
Вот как я это сделал. Используйте ключевое слово use
, чтобы сделать доступным OtherController. Затем вы можете вызвать метод из этого класса при создании экземпляра.
<?php namespace App\Http\Controllers;
use App\Http\Controllers\OtherController;
class MyController extends Controller {
public function __construct()
{
//Calling a method that is from the OtherController
$result = (new OtherController)->method();
}
}
Также проверьте концепцию Command в Laravel. Это может дать вам большую гибкость, чем метод выше.
Это то, что я думал делать, но задаюсь вопросом, как передать «Входы»? –
use App\Http\Controllers\TargetsController;
// this controller contains a function to call
class OrganizationController extends Controller {
public function createHolidays() {
// first create the reference of this controller
$b = new TargetsController();
$mob = 9898989898;
$msg = "i am ready to send a msg";
// parameter will be same
$result = $b->mytesting($msg, $mob);
log::info('my testing function call with return value' . $result);
}
}
// this controller calls it
class TargetsController extends Controller {
public function mytesting($msg, $mob) {
log::info('my testing function call');
log::info('my mob:-' . $mob . 'my msg:-' . $msg);
$a = 10;
return $a;
}
}
Это создает еще один контроллер и вызывает его метод. Также направление вызова обратное даже в том, что написано в комментариях –
Техника L4 по http://stackoverflow.com/questions/15205239/call-a-controller-in-laravel-4, вероятно, все еще будет работать. – ceejayoz
Вы наверняка как-то могли это сделать, но если вы находитесь в ситуации, когда вам нужно это сделать, это большой запах кода! Извлеките функциональность, в которой вы нуждаетесь, в отдельный класс, а затем введите ее в свои контроллеры. – Quasdunk
Это большой нет-нет! Вы должны преувеличивать это и создавать класс для этой цели, или абстрактный класс, и расширять все свои контроллеры от него. –