HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Фактически, любой CRUD состоит из 7 маршрутов, контроллера и шаблонов. Причем большая часть этого кода идентична, особенно маршруты. Они не содержат логики и всегда строятся по одному и тому же принципу.</p>
1 <p>Фактически, любой CRUD состоит из 7 маршрутов, контроллера и шаблонов. Причем большая часть этого кода идентична, особенно маршруты. Они не содержат логики и всегда строятся по одному и тому же принципу.</p>
2 <p>Laravel частично заимствовал из Rails еще один механизм, который называется "ресурсная маршрутизация". Он упрощает создание типичных CRUD, за счет полной унификации всех маршрутов и способов их обработки. Вместо описания 7 разных маршрутов, ресурсная маршрутизация позволяет указать один метамаршрут:</p>
2 <p>Laravel частично заимствовал из Rails еще один механизм, который называется "ресурсная маршрутизация". Он упрощает создание типичных CRUD, за счет полной унификации всех маршрутов и способов их обработки. Вместо описания 7 разных маршрутов, ресурсная маршрутизация позволяет указать один метамаршрут:</p>
3 <p>Внутри себя он превращается в те самые семь маршрутов, которые мы реализовывали в предыдущих уроках. Их можно увидеть с помощью команды<em>artisan</em>:</p>
3 <p>Внутри себя он превращается в те самые семь маршрутов, которые мы реализовывали в предыдущих уроках. Их можно увидеть с помощью команды<em>artisan</em>:</p>
4 <p>Довольно неплохо. В проектах где подобных CRUD много (любой типичный веб-проект), ресурсный маршрутизатор очень помогает. Он не просто сокращает количество кода, но и дает хорошую унификацию. Нужно меньше думать и меньше спорить. Все уже спроектировано.</p>
4 <p>Довольно неплохо. В проектах где подобных CRUD много (любой типичный веб-проект), ресурсный маршрутизатор очень помогает. Он не просто сокращает количество кода, но и дает хорошую унификацию. Нужно меньше думать и меньше спорить. Все уже спроектировано.</p>
5 <p>Следующий шаг - упрощение контроллера. Во-первых, можно сразу сгенерировать контроллер, со всеми нужными обработчиками. Во-вторых, этот контроллер можно интегрировать с нужной моделью:</p>
5 <p>Следующий шаг - упрощение контроллера. Во-первых, можно сразу сгенерировать контроллер, со всеми нужными обработчиками. Во-вторых, этот контроллер можно интегрировать с нужной моделью:</p>
6 <p>На выходе получим такой контроллер:</p>
6 <p>На выходе получим такой контроллер:</p>
7 <p>Обратите внимание на параметры обработчиков. Laravel самостоятельно находит нужную сущность и достает ее из базы данных. Это позволяет хоть немного, но сократить код.</p>
7 <p>Обратите внимание на параметры обработчиков. Laravel самостоятельно находит нужную сущность и достает ее из базы данных. Это позволяет хоть немного, но сократить код.</p>
8 <p>Ресурсы могут быть вложенными. Это дает возможность строить пути, отражающие зависимости между сущностями на сайте:</p>
8 <p>Ресурсы могут быть вложенными. Это дает возможность строить пути, отражающие зависимости между сущностями на сайте:</p>
9 <p>Принцип построения адресов точно такой же, как и для обычного ресурса, но с включением указания на родительский ресурс:</p>
9 <p>Принцип построения адресов точно такой же, как и для обычного ресурса, но с включением указания на родительский ресурс:</p>
10 <p>Вложенный ресурс можно генерировать автоматически:</p>
10 <p>Вложенный ресурс можно генерировать автоматически:</p>
11 <p>Например, вот так выглядит ресурс комментарии к статьям:</p>
11 <p>Например, вот так выглядит ресурс комментарии к статьям:</p>
12 <p>Для вложенного ресурса, в экшены, кроме самой сущности передается и родительская сущность:</p>
12 <p>Для вложенного ресурса, в экшены, кроме самой сущности передается и родительская сущность:</p>
13 <p>Если ресурс называется articles.comments, то параметр следует назвать $comment, а не $articleComment. Другими словами, имя параметра выбирается в единственном числе по имени ресурса.</p>
13 <p>Если ресурс называется articles.comments, то параметр следует назвать $comment, а не $articleComment. Другими словами, имя параметра выбирается в единственном числе по имени ресурса.</p>
14 <p>Немного по-другому начинает работать хелпер route. Для построения ссылок, там где участвуют оба ресурса, нужно использовать массив для их передачи:</p>
14 <p>Немного по-другому начинает работать хелпер route. Для построения ссылок, там где участвуют оба ресурса, нужно использовать массив для их передачи:</p>
15 <h2>Заключение</h2>
15 <h2>Заключение</h2>
16 <p>Ресурсная маршрутизация - удобный механизм, позволяющий немного упростить создание CRUD. Он берет на себя много работы и дает программисту возможность сосредоточиться на логике.</p>
16 <p>Ресурсная маршрутизация - удобный механизм, позволяющий немного упростить создание CRUD. Он берет на себя много работы и дает программисту возможность сосредоточиться на логике.</p>
17 <p>Существует негласное правило, насколько вложенной может быть вложенная маршрутизация. Считается, что не стоит делать более одного вложения. Иначе ссылки получаются очень длинными, а код начинает усложняться, так как приходится оперировать сразу тремя сущностями и более.</p>
17 <p>Существует негласное правило, насколько вложенной может быть вложенная маршрутизация. Считается, что не стоит делать более одного вложения. Иначе ссылки получаются очень длинными, а код начинает усложняться, так как приходится оперировать сразу тремя сущностями и более.</p>