2017-02-17 7 views
1

Я создаю приложение для нескольких языков с Laravel, и мне нужно, чтобы пользователи могли войти в систему и выбрать свой предпочтительный язык (таблицы «языки») из поля выбора и сохранить в базе данных («language_id» в таблице «пользователи»), просто выбрав его из поля. В настоящее время я не знаю, как я могу достичь этого без формы и кнопки отправки. Может ли кто-нибудь объяснить мне, как я могу это сделать правильно?Сохранить выбранное значение onchange Laravel

Контроллер: Все доступные языки хранятся в переменной и отправляют на все виды.

namespace App\Http\Controllers; 

use App\Language; 
use Illuminate\Foundation\Bus\DispatchesJobs; 
use Illuminate\Routing\Controller as BaseController; 
use Illuminate\Foundation\Validation\ValidatesRequests; 
use Illuminate\Foundation\Auth\Access\AuthorizesRequests; 
use Illuminate\Support\Facades\View; 

class Controller extends BaseController 
{ 
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests; 


    public function __construct() 
    { 
     $languages = Language::all(); 

     View::share('languages', $languages); 
    } 

} 

меню выберите: Петля Еогеасп, что заполняющий выберите поле с языками отправить через контроллер.

   <li> 

         <select class="form-control" id="language" name="language"> 
          @foreach ($languages as $language) 
           <option value="{{ $language->id }}">{{ $language->name }}</option> 
          @endforeach 
         </select> 
       </li> 

Database: «пользователи» таблица имеет «LANGUAGE_ID»

+0

Таким образом, выбор языка является частью формы входа в систему? – Jerodev

ответ

1

Вот краткая мысль, что, как вы можете сделать это:

В случае изменения в окне выбора, сгореть AJAX вызовите и сохраните это значение в таблице базы данных.

Сообщите мне, если вы не знаете, как его кодировать. Может дать вам короткий код.

2

Я предполагаю, что пользователь вошел в систему, и вы показываете один из языков как язык по умолчанию. После этого попробовать некоторые вещи, как:

Jquery:

$('#language').change(function(){ 
    // make an ajax call and save the selected language option 
    // in the user table under the `language_id` column 
    // and change the language of pages when selection changed 
}); 

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

2

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

Другой способ: write it in cookie с javascript, чем читать то же самое cookie при загрузке страницы в middleware и настройке языка.

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

Смежные вопросы