Я хочу создать базовый класс контроллеров для всех моих контроллеров в Symfony, я новичок в Symfony, поэтому не сердитесь на глупые вопросы. Я задаю этот вопрос, потому что я не могу сделать что-то подобное
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class AbstractController extends Controller
{
public function __construct()
{
//...... check access level
$user = $this->getUser(); //This is not working, I don't have access to the Controller(the base class) properties
}
}
Теперь один из моих контроллеров
class UserController extends AbstractController
{
public deleteUserAction(Request $request)
{
var_dump($this);// this will dump an empty class that is not instance of Symfony\Bundle\FrameworkBundle\Controller\Controller
//.... delete user
}
}
Каков наилучший способ сделать это? пожалуйста…
РЕДАКТИРОВАТЬ….
Что я действительно хочу сделать, это проверить, достаточно ли уровня привилегий пользователя для доступа к определенному действию (например, deleteUserAction ()) в конкретном контроллере (например, UserController), у меня есть класс, который присоединяет уровень привилегий ко всем действиям во всех контроллерах , Проверка будет очень эффективной, если она происходит в родительском контроллере (например, конструкторе BaseController), который выполняется до UserController->deleteUserAction()
но в базовом контроллере у меня нет доступа к $ this.
Я попробовал избирателя, и ACL ни один не помогает моей ситуации.
Заранее спасибо.
Я думаю, что второй — лучший способ создать свой собственный класс и использовать в нем общую функцию.
Если вы хотите добавить некоторые общие функции контроллера, то это не правильный способ добавить его в контроллер Symfony по умолчанию, вместо этого вы можете создать BaseController
и расширить ваш контроллер с помощью BaseController
и ваш BaseController should extends Controller
,
Таким образом, контроллер Symfony по умолчанию остается неизменным.
просто используйте сервисный контроллер …