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>