Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте! Делаю уроки по Джеффри Уэйю, Custom Facades.
Мне нужен поиск на странице 404.
Я новичок в ларавел. По урокам создал сайт, все настроил. Осталось реализовать поиск, и мой проект в Интернете! Но на поиске я и сломался((
Если пишешь в адресной строке posts?q= и поисковый запрос, то происходит вывод результатов. То, что нужно. Но если пишешь запрос в форме, то он передает его в адресную строку и вывода результатов не происходит. Помогите, пожалуйста, новичку доработать код, очень нужно! У Джеффри Уэйя этот урок не закончен, предполагается, что люди сами это сделают. Понимаю, что нужно изучить вначале php получше... и потом только браться за ларавел...
Если кто-нибудь способен доработать, помогите пожалуйста!!!
код такой:
Форма:
{{ Form::open(['method' => 'GET']) }}
{{Form::input('search', 'q', null, ['placeholder' => 'Поиск...'])}}
{{ Form::close() }}
Маршрут routes.php
Route::get('posts', 'PostsController@index');
Route::get('search/{query}', function($query)
{
return Search::acme($query);
});
Контроллер PostsController.php
class PostsController extends BaseController {
public function index()
{
if($search = Request::get('q'))
{
$posts = Search::posts($search);
}
else
{
$posts = Post::all();
}
return View::make('posts.index', compact('posts'));
}
}
Модель Post.php
class Post extends Eloquent {
public function scopeSearch($query, $search)
{
return $query->where(function($query) use ($search)
{
$query->where('title', 'LIKE', "%$search%")
->orWhere('body', 'LIKE', "%$search%");
});
}
}
Фасад Acme/Facades/Search.php
<?php namespace Acme\Facades;
use Illuminate\Support\Facades\Facade;
class Search extends Facade {
protected static function getFacadeAccessor()
{
return 'search';
}
}
Acme/Search/Search.php
<?php namespace Acme\Search;
use Illuminate\Support\Collection;
use Post;
class Search {
public function posts($search)
{
return Post::search($search)->get();
}
public function acme()
{
return new Collection(['all', 'search' , 'results']);//temporary
}
}
Acme/Search/SearchServiceProvider.php
<?php namespace Acme\Search;
use Illuminate\Support\ServiceProvider;
class SearchServiceProvider extends ServiceProvider {
public function register()
{
$this->app->bind('search', 'Acme\Search\Search');
}
}
Вывод результатов index.blade.php
@extends('layouts.default')
@section('content')
@if ($posts->count())
@foreach($posts as $post)
<h2>{{ $post->title }}
<p>{{ $post->body }}</p>
@endforeach
@else
<p>К сожалению, поиск не дал результатов.</p>
Страницы 1