любые идеи о том, как конвертировать этот код Laravel-5.1. У меня есть этот код, работающий на чистом PHP, я хотел бы написать его на Laravel, так как я использую Laravel для разработки. Я был бы очень признателен за указание на учебник, который уже сделал это или предоставление фрагмента кода.
<?php
if(isset($_POST['query'])){
mysql_connect('localhost', 'root', '');
mysql_select_db('tradersmart');
$query = $_POST['query'];
$sql = mysql_query("SELECT name, timezone_id FROM geonames_names WHERE name LIKE '%{$query}%'");
$arrayName = array();
$arrayTimezone = array();
while($row = mysql_fetch_assoc($sql)){
$arrayName[] = $row['timezone_id'];
$arrayTimezone[] = $row['name'];
}
echo json_encode($arrayName +$arrayTimezone);
}
?>
Это HTML-файл: он использует JSon и typeahead для ускорения предложения.
<body>
<div class="well">
<input type="text" class="css-input" id="typeahead" data-provider="typeahead">
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
<script>
$(function(){
$('#typeahead').typeahead({
source: function(query, process){
$.ajax({
url: 'http://localhost:2222/bootstrap/source.php',
type: 'POST',
data: 'query=' +query,
dataType: 'JSON',
async: true,
success: function(data){
process(data);
}
});
}
});
});
</script>
</body>
Ну, так как вы спрашиваете о способе Laravel, у вас будет несколько шагов, чтобы это сделать. Короче говоря, вам нужно 1) создать модель, 2) обновить свой routes.php
файл, 3) создать контроллер и (4) обновить ваш вызов ajax, чтобы отразить соглашения о маршрутизации Laravel. Я предлагаю использовать командную строку php artisan
команды для создания модели и контроллера, так как они будут помещать необходимые файлы в правильные пути, чтобы Laravel автоматически загружал их для вас.
Модель — беги php artisan make:model GeoName
из командной строки, это должно создать модель в app/GeoName.php
в которой вам нужно будет изменить имя таблицы, чтобы отразить ваше привычное имя.
<? namespace App;
use Illuminate\Database\Eloquent\Model;
class GeoName extends Model
{
// this will map your custom table name to laravel.
protected $table = "geonames_names";
}
Laravel автоматически ожидает, что имя таблицы будет множественной версией модели, в этом случае она будет искать geonames
, чтобы переопределить что вам нужно будет добавить protected $table
атрибут выше.
Обновите app/Http/routes.php
файл для перехвата AJAX-запроса.
Route::post('bootstrap/source','GeoNameController@ajaxQuery');
Это поймает POST
запросить http://localhost:2222/bootstrap/cache
есть еще в Laravel Документы на маршрутах Вот.
Создать контроллер с помощью php artisan make:Controller GeoNameController --plain
в командной строке. Обычный используется здесь, чтобы остановить автоматическое создание стандартных типов запросов CRUD для индексации, создания, редактирования, отображения, обновления и удаления. Это создаст файл app/Http/Controllers/GeoNameController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class GeoNameControler extends Controller
{
// Add the following here
public function ajaxQuery(Request $request){
$query = $request->get('query');
$geoNames = GeoName::where('name',$query)->lists('name','timezone_id')->get();
return $geoNames;
}
}
Имейте в виду, что query
используется в $query = $request->get('query');
потому что это то, что вы назвали переменную данных в вашем запросе ajax. ( data: 'query=' +query,
)
Наконец, в вашем jQuery-запросе ajax удалите .php
в запросе звоните. url: 'http://localhost:2222/bootstrap/source'
так как вы никогда не будете напрямую вызывать файлы в Laravel, файлы маршрутов обрабатывают все пункты назначения для вашего приложения.
Несколько замечаний: (1) Ваша база данных должна быть настроена с использованием .env
and app/config.php
files, (2) Laravel автоматически обнаружит, что ajax-функция jQuery ожидает ответ JSON, поэтому Laravel предоставит именно то, что запрашивает.
Вероятно, у вас возникнет проблема с разрешением токена XSFR, о которой вы можете прочитать в разделе Laravel Docs Вот. Если вы еще не знаете, Основная документация Ларавела отлично!
Конечно, есть много чего узнать об использовании Laravel и много отличных ресурсов Laravel. Удачи!
Других решений пока нет …