Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Как я понял, ларавел пусть и берёт входящие гет данные, но в пути должен иметь хотя бы одно постоянное слово для инициализации
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
Не в сети
Может есть какое-нибудь дополение у ларавела, чтоб через интерфейс можно было делать иерархию записей моделей. Ну как раз сделать типа товар, категории, подкатегории, провести связь товара с подкатегорией и чтоб потом выстраивался урл в духе категория1/подкатегория1-1/подкатегория1-12/мясо
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети
Пока мысль следующая.
Зафигачить 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
Не в сети
Сделай
Route::any('(:any)/(:all?)', 'WelcomeController@ff');
и разбирай в контроллере всё
или
Route::any( '(.*)', function( $page ){
// здесь уже разбивай и распределяй
});
или
Route::any('{slug}', function($slug)
{
//здесь уже разбивай и распределяй
})->where('slug', '([A-z\d-\/_.]+)?');
или ещё подумать можно
А как такое ловить в контроллере?
Ну то есть первый вариант и второй
public function xx( $any )
{
print_r($any);
}
так не видит NotFoundHttpException in выдаёт
Ну а третий, это ведь просто переменная, то бишь путь с 1 словом, а не кучей типа cat1/podcat2/tov1
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети
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
Не в сети
Вот мой вариант, если что. Можно зарегить скок угодно уровней, одна ф-ция проверяет правильность 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
Не в сети
Kirir, ну научитесь наконец пользоваться разметкой, ваши простыни кода читать невозможно.
[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')); %%
Не в сети
Учту, хотя ведь тут с табуляцией, копипасти, не хочу.
Изменено Kirir (14.12.2016 00:54:31)
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети
- хотя ведь тут с табуляцией, копипасти, не хочу.
Во-первых, код должен визуально выделяться фоном или другим образом, а не быть частью текста. Во-вторых, есть ограничения на длину листинга, после которой к коду добавляется прокрутка. В-третьих, дело не в пробелах, а в форматировании и в моноширном шрифте.
Не в сети
"Кароч, мне надо" (С)
Не в сети
Proger_XP, ок, не знал. Не часто на форумах пишу прост.
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети
Малось гробокопание, но в 5.7 маршрут по любому урл можно сделать так
Route::get('/{any}', 'SpaController@index')->where('any', '.*');
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети
Страницы 1