Я пытаюсь, чтобы мой лезвие Laravel переключало макеты, когда флажок установлен / не выбран, пока нет видимых результатов. Чего мне не хватает? Вот соответствующая часть моего кода.
лопасть index.blade.php
...
@if ($tab == true)
<div style="background-color:green;height:100px;width:200px;">
//for test porposes a div with diff color only
some text
</div>
<input type="checkbox" name="layout" value="1" onclick="processForm()" checked>
@else
<div style="background-color:red;height:100px;width:200px;">
some text
</div>
<input type="checkbox" name="layout" value="1" onclick="processForm()">
@endif
...
@endsection
@section('scripts')
<script type="text/javascript">
function processForm() {
$.ajax( {
type: 'POST',
url: 'articles/layout',
data: { layout : $('input:checkbox:checked').val()},
success: function(data) {
$('#message').html(data);
}
} );
}
</script>
@stop
Маршруты
Route::resource('articles','ArticleController');
Route::post('articles/layout', [
'as' => 'articles.layout',
'uses' => 'ArticleController@layout'
]);
Наконец контроллер ArticleController.php
<?php
namespace Vanguard\Http\Controllers\Web;
use Illuminate\Http\Request;
use Vanguard\Http\Controllers\Controller;
use Vanguard\Article;
class ArticleController extends Controller
{
public function index()
{
$articles = Article::latest()->paginate(10);
$page_title = "hello world";
$page_title_sml = "small hello world";
if (!isset($tab)) {
$tab = false;
}
return view('articles.index',compact('articles', 'page_title' , 'page_title_sml', 'tab'))
->with('i', (request()->input('page', 1) - 1) * 5);
}
...
//custom function
public function layout(Request $request)
{
$tab = $request->layout;
return redirect()->route('articles.index')
->with('success','Layout changed');
}
//end custom function
}
Моя логика такова: флажок Ajax-монитора> после того, как он установлен / снят, Ajax отправляет запрос на публикацию к article / layout>, который запускает ArticleController @ layout>, чья переменная флажка процесса> перенаправляет в статьи контроллера, чтобы отображать блейд соответственно.
Что мне не хватает? Есть ли лучший / более простой способ добиться этого?
Спасибо
Задача ещё не решена.
Других решений пока нет …