【问题标题】:Check to see if a page is called via Ajax in Laravel检查页面是否通过 Laravel 中的 Ajax 调用
【发布时间】:2016-05-12 04:22:53
【问题描述】:

这是我几天前发的帖子的扩展:Change a page without refreshing - Laravel / Ajax

基本上,我正在尝试复制 Soundcloud 的 URL 结构,您可以在其中单击链接,它会在不刷新页面的情况下加载内容,但是如果您直接登陆该页面,它不会复制设计和有效中断。

如果页面是通过 Ajax 请求或在没有 Ajax 调用的情况下登陆的,我一直在考虑如何在 Laravel 中检查。

目前发生的情况是,当我调用页面时,视图有一个扩展的主模板,因此在一个视图上创建了重复的主模板。

我在想如果我做了类似的事情

@if(!Request::ajax())
@extends('masterlayout')
@endif

它会工作,但尝试过但没有运气。

非常感谢任何帮助!

谢谢

【问题讨论】:

  • 可以显示完整的代码吗?

标签: ajax laravel


【解决方案1】:

看起来@extends 指令即使在虚假if 中也总是被执行

您可以添加一个空布局并执行如下检查:

@extends(Request::ajax()? 'layouts.empty' : 'layouts.master') 

你只需要在布局中添加这个empty.blade.php:

@yield('content')

或者您可以在主布局中添加 ajax 检查

@if(!Request::ajax())
 // all layout code
@else
   @yield('content')
@endif

【讨论】:

  • 嗨,Grin,这太棒了,谢谢!工作一种享受,正是我需要它!太爱了!
【解决方案2】:

您可以在控制器操作中检查。

public function index(Request $request)
{
    if($request->ajax()){
        return "This is an AJAX call!";
    }
    return "Not an AJAX call...";
}

【讨论】:

    【解决方案3】:

    感谢所有答案,我最终通过在通过 ajax 加载页面时不需要显示的部分上使用 @if(!Request::ajax()) 解决了这个问题。

    再次感谢您! :D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-30
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 1970-01-01
      • 2015-05-27
      相关资源
      最近更新 更多