Попытка заставить панель поиска работать в laravel 5

Я пытаюсь получить панель поиска, чтобы просмотреть мою базу данных и получить все числа, которые включают эти 2 случайных числа, которые введет пользователь. 2 последовательных числа могут быть где угодно в строке, и тогда он должен захватить всю строку. Одна проблема, с которой я сталкиваюсь, заключается в том, что форма находится в макете (может быть, это не имеет значения, но я все равно хотел бы знать, как я могу поместить макет в контроллер и включить его в другие методы), поэтому он не есть собственный метод и сама форма, которую я пытаюсь перенаправить в другое представление с отображением результатов поиска. На данный момент это ошибка, которую я получаю: Missing argument 1 for App\Http\Controllers\SearchController::SearchEngine()

В моем макете:

{!! Form::open(array('method' => 'GET', 'url' => 'search_engine')) !!}
    <div class="form-group">
        {!! Form::label('SEARCH:') !!}
        {!! Form::text('search', null, ['class' => 'form-control',
          'placeholder' =>'(NSN or PN)', 'size' => '20']) !!}
        {!! Form::submit('Submit', ['class' => 'btn btn-primary form-control']) !!}
    </div>
{!! Form::close() !!}

В моих маршрутах: `Route::get('search_engine', 'SearchController@SearchEngine');

В моем контроллере:

 public function SearchEngine($i)
    {
        $search = input::get('search');
        $terms = explode(" ", $search);
        $query = fsgdata::where('fsg_number')->get();

        foreach($terms as $each) {
            $i++;
            if($i == 1) {
                $query .= "fsg_number LIKE '%$each%' ";
                echo $each;
            }
            else {
                $query .= "0R fsg_number LIKE '%$each%' ";
            }
        }

    // connect
        mysql_connect("localhost", "USERNAME", "PASSWORD");
        mysql_select_db("DB_NAME");

        $query = mysql_query($query);
        $numrows = mysql_num_rows($query);
        if ($numrows > 0) {

            while ($row = mysql_fetch_assoc($query)) {
                $fsg_number = $row['fsg_number'];

                echo "<h2>$fsg_number</h2>";
            }
        }
        else {
        }

    // disconnect
        mysql_close();

        return View('Partials.search_form');
    }

И мой взгляд - это просто еще одна панель поиска и т. Д.

К сожалению, может быть, я тупой тупой, но документы laravels не вдаются в подробности о каких-либо их функциях, а вместо этого выбирают один и готовый пример стиля изображения. Я новичок в периоде laravel, поэтому для меня задача заполнения точек может быть очень сложной.


person Vantheman6    schedule 07.04.2015    source источник
comment
вы определили функцию как public function SearchEngine($i), где аргумент $i никогда не передается. Каким должно быть $i?   -  person manix    schedule 08.04.2015
comment
хаха вау. Благодарю. Честно говоря, я нашел этот код, потому что я никогда раньше не делал панель поиска, и все это выше моей головы. После того, как я исправил это, я получаю странную ошибку mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead. Это действительно говорит мне, что я не могу использовать базу данных, о которой меня попросил мой босс?   -  person Vantheman6    schedule 08.04.2015


Ответы (1)


Я знаю, что опоздал, но почему бы вам не использовать собственный конструктор запросов Laravel? Он очистит ваши запросы, автоматически их дезинфицирует.

Также похоже, что вы пытаетесь получить данные из формы неправильно.

Пример метода получения данных из формы публикации должен выглядеть примерно так:

public function retrieveFromPost(Request $request) {
    if ($request->has('param')) {
        $param = $request->input('param');
            $data = DB::select("SELECT *
            FROM table_name
            WHERE column_name LIKE :param" ['param' => $param]);
            return view('view', ['data' => $data]);
    } else { 
        return; 
    }

Это подтвердит, что запрос имеет допустимый ввод в параметре «param», отправленном из почтовой формы. Он будет выбирать данные с помощью оператора SQL LIKE и возвращать представление со всеми извлеченными данными, переданными в представление. Оператор else вернет и завершит сценарий, если данные из почтового запроса недействительны.

person Sloth    schedule 19.07.2015