Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 24.11.2016 22:43:53

Настроить маршрут по пути из переменных

Как я понял, ларавел пусть и берёт входящие гет данные, но в пути должен иметь хотя бы одно постоянное слово для инициализации
Route::post('{cityName}/production/{productName}', 'ProductController@pageProduct');
Но что мне делать, если я хочу путь не
piter/production/meat
а
piter/meat
?
Хотя в идеале я хочу piter/production/meat/big/chicken то бишь чтоб пусть состоял из города, названий категорий и подкатегорий и в конце имя товара.

И ещё, где можно посмотреть все методы и св-ва у классов ларавела?
У Validator например или Request? На оф сайте перечня не нашёл.

И ещё типа вопрос...
Как известно, чекбоксы, кнопки, выпадающие списки и прочие поля форм выглядят в разных браузерах по-своему и тематизировать их крайне неудобно(в выпадающий список адекватно для всхе браузеров и вовсе никак), поэтому я делал всё c помощью джиквервского Chosen. Он создаёт хтмл и вяжет его со стандартной формой, которую скрывает. Может есть какая-нить его особая связка с ларавелом?

Изменено Kirir (24.11.2016 22:50:51)


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#2 24.11.2016 23:13:36

Re: Настроить маршрут по пути из переменных

Может есть какое-нибудь дополение у ларавела, чтоб через интерфейс можно было делать иерархию записей моделей. Ну как раз сделать типа товар, категории, подкатегории, провести связь товара с подкатегорией и чтоб потом выстраивался урл в духе категория1/подкатегория1-1/подкатегория1-12/мясо


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#3 24.11.2016 23:22:19

гость15

Re: Настроить маршрут по пути из переменных

#4 25.11.2016 00:19:31

Re: Настроить маршрут по пути из переменных

Пока мысль следующая.
Зафигачить 10 роутов типа(уж длиннее иерархии я вроде не видал на сайтах)
Route::get('{editNodeId}', 'WelcomeController@ff1');
Route::get('{editNodeId}/{editNodeId2}', 'WelcomeController@ff2');
И сделать по сути одинаковые экшены, которые отличаются ток тем, что будут ловится имена страниц до последней и забиваться в хлеб крошки, а у послед страницы по имени будет находится тип и прочие данные, а по ним определятся подходящая вьюха соответственно. Весьма гибко в принципе, но что-то тут не так...

Изменено Kirir (25.11.2016 00:28:34)


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#5 25.11.2016 11:53:39

гость15

Re: Настроить маршрут по пути из переменных

Сделай

Route::any('(:any)/(:all?)', 'WelcomeController@ff');

и разбирай в контроллере всё
или

Route::any( '(.*)', function( $page ){
    // здесь уже разбивай и распределяй
});

или

Route::any('{slug}', function($slug)
{
    //здесь уже разбивай и распределяй
})->where('slug', '([A-z\d-\/_.]+)?');

или ещё подумать можно smile

#6 26.11.2016 02:52:52

Re: Настроить маршрут по пути из переменных

А как такое ловить в контроллере?
Ну то есть первый вариант и второй
    public function xx( $any    )
    {
        print_r($any);
    }
так не видит NotFoundHttpException in  выдаёт
Ну а третий, это ведь просто переменная, то бишь путь с 1 словом, а не кучей типа cat1/podcat2/tov1


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#7 27.11.2016 14:34:31

Re: Настроить маршрут по пути из переменных

http://stackoverflow.com/questions/1329 … all-routes
Нашёл тут пример
Route::any('(:any)/(:all?)', function($first, $rest=''){
    $page = $rest ? "{$first}/{$rest}" : $first;
    dd($page);
});
Route::any( '(.*)', function( $page ){
    dd($page);
});
Event::listen('404', function() {
    $page = URI::current();
    // custom logic, else
    return Response::error('404');
});

Ничё из этого не работает. Походу дела ток мой вариант работает, пока что.


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#8 13.12.2016 19:42:51

Re: Настроить маршрут по пути из переменных

Вот мой вариант, если что. Можно зарегить скок угодно уровней, одна ф-ция проверяет правильность url страницы с учётом иерархии страниц-родителей, а потом строит хлеб крошки. Если адрес страницы невалидный, выдаёт 404.

//страница любой страницы до n-ой по хлебным крошкам
Route::get('{alias1}', array( 'uses' => 'WelcomeController@page'));
Route::get('{alias2}/{alias1}', array( 'uses' => 'WelcomeController@page'));
Route::get('{alias3}/{alias2}/{alias1}', array( 'uses' => 'WelcomeController@page'));


    public function page(  Request $reguest) ///
    {

        $arr = explode("/", $reguest->path() );
        $endAl = array_pop($arr);
        $nSum = count($arr);
        $n = 0;
        $breads=  array();
        $aliasArr=  array();
        $page = DB::table('page')->select('title','alias','idparentPage')->where('alias', '=', $endAl)->get();
        if ( empty( $page ) ) return App::abort(404);
        $breads[]= $page[0]->title;
        $aliasArr[]=  $page[0]->alias;
        while( true) {
            if ($page[0]->idparentPage != 0) {
                $page = DB::table('page')->select('id','alias','title','idparentPage')->where('id', '=', $page[0]->idparentPage)->get();
                $breads[]= $page[0]->title;
                $aliasArr[]=  $page[0]->alias;
            }
            else break;
        }
        //
        $aliasArrPath = implode("/",  array_reverse($aliasArr) );
        //
        if ( $aliasArrPath != $reguest->path())  return App::abort(404); /////////////////////////////////////
        else {
            $breadcrumps = array();
            foreach ($aliasArr as $n=> $name) {
                $href = array();
                $page = DB::table('page')->select('alias','idparentPage')->where('alias', '=', $name)->get();
                $mm = 0;
                while( true) {
                    if ($page[0]->idparentPage != 0) {
                        $page = DB::table('page')->select('alias','idparentPage')->where('id', '=', $page[0]->idparentPage)->get();
                        $href []=  $page[0]->alias;
                    }
                    else break;
                }
                $href = implode("/",  array_reverse( $href  ) ) . '/'.$name;
                $breadcrumps []=  '<a href = "'.url().'/'.$href.'">'.$breads[$n].'</a>';
            }
            print implode("/",  array_reverse( $breadcrumps ) );
        }
    }

Изменено Kirir (13.12.2016 19:47:49)


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#9 13.12.2016 22:22:08

Re: Настроить маршрут по пути из переменных

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

BB-коды:

[code]
//страница любой страницы до n-ой по хлебным крошкам
Route::get('{alias1}', array( 'uses' => 'WelcomeController@page'));
Route::get('{alias2}/{alias1}', array( 'uses' => 'WelcomeController@page'));
Route::get('{alias3}/{alias2}/{alias1}', array( 'uses' => 'WelcomeController@page'));
[/code]

Либо вики:

%%(php)
//страница любой страницы до n-ой по хлебным крошкам
Route::get('{alias1}', array( 'uses' => 'WelcomeController@page'));
Route::get('{alias2}/{alias1}', array( 'uses' => 'WelcomeController@page'));
Route::get('{alias3}/{alias2}/{alias1}', array( 'uses' => 'WelcomeController@page'));
%%

Не в сети

#10 14.12.2016 00:53:10

Re: Настроить маршрут по пути из переменных

Учту, хотя ведь тут с табуляцией, копипасти, не хочу.

Изменено Kirir (14.12.2016 00:54:31)


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#11 14.12.2016 11:29:33

Re: Настроить маршрут по пути из переменных

  1. хотя ведь тут с табуляцией, копипасти, не хочу.

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

Не в сети

#12 14.12.2016 12:14:07

Re: Настроить маршрут по пути из переменных

"Кароч, мне надо" (С) smile

Не в сети

#13 14.12.2016 14:52:07

Re: Настроить маршрут по пути из переменных

Proger_XP, ок, не знал. Не часто на форумах пишу прост.


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#14 25.01.2019 16:48:45

Re: Настроить маршрут по пути из переменных

Малось гробокопание, но в 5.7 маршрут по любому урл можно сделать так

Route::get('/{any}', 'SpaController@index')->where('any', '.*');

Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

Подвал раздела