@Kristina8787

Стоит ли доработать код в части подключения контроллеров?

Здравствуйте. Сделала два контроллера, общий и админский, но не нашла ничего умнее как подключать админский через правило в общем контроллере, думаю что я былдокод сварганила, помогите довести до ума.

Вот общий контроллер

require_once __DIR__.'/App/autoload.php';


$parts = explode('/', $_SERVER['REQUEST_URI']);

if (('admin' === $parts[1]) ){
  require_once __DIR__.'/indexAdmin.php';

} else {
  $ctrl1 = $parts[1] ? ucfirst($parts[1]) : 'Index';

  if (isset($parts[2])) {
    $ctrl2 = ucfirst($parts[2]);
    $class = '\App\Controllers\\' . $ctrl2;
    $parts = explode('?', $parts[3]);
    $act = $parts[0] ?? 'handle';
  } else {
    $class = '\App\Controllers\\' . $ctrl1;
    $act = 'handle';
  }

  $ctrl = new $class;
  $ctrl->action($act);
}


вот админский контроллер

require_once __DIR__.'/App/autoload.php';



  $parts = explode('/', $_SERVER['REQUEST_URI']);


  $ctrl1 = $parts[1] ? ucfirst($parts[1]) : 'Admin';
  $ctrl2 = $parts[2] ? ucfirst($parts[2]) : 'IndexAdmin';

  $class = '\App\Controllers\\' . $ctrl1 .'\\' . $ctrl2;

  if(!empty($parts[3])){
    $parts1 = explode('?', $parts[3]);
  }

  $act = $parts1[0] ?? 'handle';

  $ctrl = new $class;
  $ctrl->action($act);


вот так через ссылку содержание которой разбивается на части и в контроллере собирается в класс обьекта я перехожу из общего контроллера в админский

<a href="/admin/IndexAdmin">ADMIN</a>
    <?php foreach ($this->news as $article): ?>
    <a href="/index/article/handle?id=<?php echo $article->id; ?>">  <h2> <?php echo $article->title; ?> </h2></a><br>
      <article class="">
        <?php echo $article->text; ?>
      </article>
      <?php if (!empty($article->author_id)):?>
      <h4> <?php echo $article->author->name; ?> </h4>
    <?php endif;  ?>
    <?php endforeach; ?>


как сделать переключение на админский контроллер не касаясь общего, при этом шагая как раз таки из общего, без авторизации? заранее благодарна.
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы