Codeigniter - создание просмотров Q - PullRequest
2 голосов
/ 01 августа 2011

Я не слишком технический специалист, но хотел бы знать, так как моя техническая команда реализует этот способ: Нужно ли нам создавать файл «контроллера» для каждого набора представлений, которые нам нужно вызывать на веб-сайте, ИЛИ мы можем контролировать ВСЕ представления от 1 контроллера? Кажется, больше работы, чтобы несколько контроллеров контролировали все представления. Я хотел бы, чтобы один контроллер вызывал все представления, чтобы сократить время проекта, но не уверен, возможно ли это или даже хорошая практика?

Ответы [ 5 ]

2 голосов
/ 01 августа 2011

Это не хорошая и не плохая практика.Все, что имеет значение, это то, что ваш код ясен и хорошо структурирован.После этого Code Igniter дает вам большую гибкость в том, как вы используете контроллеры и представления.Лично я склонен использовать одно представление для каждого действия (поэтому контроллер часто контролирует несколько представлений).

1 голос
/ 01 августа 2011

У меня будет один контроллер, использующий несколько представлений. Вот как. Мои веб-страницы имеют общий заголовок, нижний колонтитул и структуру навигации, поэтому эти представления будут общими для всех вызовов веб-страниц, поэтому контроллер может наследовать метод, который принимает содержимое и собирает страницу, используя заголовки / нижние колонтитулы / общие представления. Для отображения сеток у меня может быть общий вид сетки, который я могу продолжать использовать в нескольких контроллерах для отображения табличных данных. Различные варианты использования могут повторно использовать некоторые представления. Поэтому имеет смысл использовать несколько представлений в одном контроллере.

1 голос
/ 01 августа 2011

Это действительно зависит от того, что должен делать ваш контроллер.Если все, что вы хотите сделать, это, например, показать сообщения в блоге или страницы с контентом, вы можете просто использовать один контроллер под названием «блог» или «страницы».Контроллеры обрабатывают логику.Если у вас есть много функций, которые вы хотели бы запустить (например, учетные записи, события, фотографии и т. Д.), Обычно всегда разумно назначать каждому свой контроллер, чтобы они могли надлежащим образом обрабатывать операции со своей моделью.

Есливы используете фреймворки, такие как CodeIgniter, вы можете использовать функцию маршрутизации для автоматической маршрутизации определенных URL-адресов через определенный контроллер.Например, если вы хотите, чтобы страницы имели URL-адрес http://example.com/page/page-title - вам нужно использовать эту строку в файле конфигурации маршрутов:

$route['page/(:any)'] = 'page/get_page';

Любой запрос URI, содержащий «страницу»будет обрабатываться контроллером страницы и методом get_page.Вы можете захватить заголовок страницы или идентификатор страницы, используя $this->uri->segment(2).

1 голос
/ 01 августа 2011

Да, это возможно;Вы можете легко протестировать его самостоятельно:

class Customcontroller extends CI_Controller {

    function index()
    {
      $data['test'] = 'test';
      $this->load->view('header', $data);
      $this->load->view('body');
      $this->load->view('footer');
    }    
}

Вы заметите, что этот способ $data будет доступен для всех представлений, даже если он не был передан по отдельности во время загрузки.

Я считаюЭто хороший способ построения страниц, используя представления в качестве блоков.Таким образом, вы можете также представить представления в соответствии с некоторыми ограничениями:

  $this->load->view('header');
 if($this->form_validation->run() == FALSE)
 {
    $this->load->view('display_form');
 }
  else
 {
   $this->load->view('form_sent');
 }
 $this->load->view('footer');

, например.

Хотя MVC обозначает Model-View-Controller и предлагает взаимно-однозначную корреляцию,используя разные представления для одного и того же контроллера, я сомневаюсь, что это можно считать «плохой практикой»;как уже говорилось, на самом деле идеального способа сделать это не существует, важно, чтобы логика была отделена и чтобы ваш код был хорошо структурирован и организован, особенно при работе в команде.

0 голосов
/ 19 июня 2017

сам по себе codeigniter не ограничивает количество используемых контроллеров.

, но в качестве основной идеи я склонен разделять контроллеры на модули. Например,

, если на вашем сайте естьпередний конец и задний конец, я бы разделил их, поэтому я получил 2 контроллера (каждый со своими представлениями).

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

еще больше, вы можете разбить их на более мелкие модули.например, в передней части есть страница home и страница article (конечно, у вас есть разные представления для них), вы также можете разбить их, если вы считаете, что онидостаточно сложный.но если вы думаете, что они простые, то хорошо, если вы используете 1 контроллер для этих представлений.

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