标签: laravel-blade

Laravel Blade 模板也读取注释进行处理

我是第一次使用刀片,并且我添加了一条注释行。但运行页面时抛出异常,发现注释行也被执行。

评论行:

<!-- {!! !!} changed to {{ }}.  ref : https://laravel.com/docs/5.5/blade -->
Run Code Online (Sandbox Code Playgroud)

错误异常:

<!-- <?php echo !!} changed to <?php echo e(}}.  ref : https://laravel.com/docs/5.5/blade -->
Run Code Online (Sandbox Code Playgroud)

laravel laravel-blade

5
推荐指数
1
解决办法
305
查看次数

Laravel 表单验证在表单错误时重定向回主页,而不是停留在同一页面

我有一个联系表单,提交后可以成功发送到数据库。问题是当我在网页上检查验证时。使用 Laravel $error 验证可以正确显示错误。问题是,当出现错误时,我的网页总是重定向回主页,而不是页面仍然显示错误。我必须继续向下滚动到我的联系表所在的位置才能看到错误;这会惹恼我未来的用户。如果出现错误,如何使页面保持在原来的位置?注意:当表单有效并提交时,我的页面会正确重定向。这不是问题。注 2:我创建了一个单页网页,导航链接会将您带到该网页。没有重定向。相反,它是一个 HTML 页面。

网页.php

Route::get('/', 'HomeController@index')->name('home');
Route::post('/contact/submit', 'MessagesController@submit');
Run Code Online (Sandbox Code Playgroud)

消息控制器.php

namespace App\Http\Controllers;

use App\Message;
use Illuminate\Http\Request;

class MessagesController extends Controller
{
    public function submit(Request $request)
    {
        $validatedData = $request->validate([
            'name' => 'required|min:2',
            'email' => 'required|max:255',
            'phonenumber' => 'required|min:10|max:10',
            'message' => 'required|min:5',
        ]);

        Message::create($validatedData);

        return redirect('/')->with('success', 'Your message has been 
            successfully sent. We will reach out to you soon');
    }
}
Run Code Online (Sandbox Code Playgroud)

contact.blade.php

{{--CONTACT FORM--}}
<section id="contact">
    <div class="container-fluid padding">
        <div class="row text-center padding">
            <div class="col-12">
                <h2 class="lead display-3">Contact …
Run Code Online (Sandbox Code Playgroud)

laravel laravel-blade

5
推荐指数
2
解决办法
1万
查看次数

如何在 Laravel 中使用同一个 Blade 模板来添加和编辑一个控制器?

我有一个问题,我使用相同的刀片模板来创建和插入。在我的控制器中,我在编辑功能和我使用的方法模板上创建了一个变量 ModificationMode isset()

控制器

public function edit($id)
{
    $ModificationMode = 0;
    $DataPraticien = \App\Praticien::find($id);

    return view('AjoutePraticien', compact('DataPraticien'))->with('ModificationMode', $ModificationMode);
}
Run Code Online (Sandbox Code Playgroud)

看法

@if(isset($ModificationMode))

<form method="post" action="{{route('prat.update', $DataPraticien ?? '')}}">
@csrf
@method('PATCH')
    @else
    <form action="{{route('prat.store')}}" method="post">
        @endif
//stuff
//stuff
Run Code Online (Sandbox Code Playgroud)

我将每个变量设为可选。这是一个好主意吗?这种方法会给我带来一些问题吗?安全怎么样?

php crud laravel laravel-blade

5
推荐指数
2
解决办法
2604
查看次数

如何在 laravel Blade 中显示 iframe

我一直在用纯原生 html 和 php 开发一个项目,我想将其转移到 laravel。现在,当我想在另一个页面(另一个刀片文件)内显示 iframe(刀片文件)时,我陷入了困境。父页面正在显示,但 iframe 出现 404(未找到)错误。下面是我的代码:

请注意,这两个文件位于“view”目录中的同一文件夹中。

父.blade.php

<iframe src="child.blade.php">Your browser isn't compatible</iframe>

路线

Route::group(['prefix' => 'parent'], function () {
    Route::get('/', 'ParentController@index');
    Route::get('/child', 'ParentController@child');
});
Run Code Online (Sandbox Code Playgroud)

控制器

public function index()
{
   return view('folder/index');
}

public function child()
{
   return view('folder/child');
}
Run Code Online (Sandbox Code Playgroud)

html iframe laravel laravel-blade

5
推荐指数
1
解决办法
2万
查看次数

jquery.min.js:2未捕获的类型错误:无法读取未定义的属性“替换”(javascript)(laravel)

我正在尝试使用此库导入拖放编辑器

但我收到这些错误

    jquery.min.js:2 Uncaught TypeError: Cannot read property 'replace' of undefined
    at initModalSource (examples.js:96)
    at HTMLDocument.<anonymous> (examples.js:3)
    at e (jquery.min.js:2)
    at t (jquery.min.js:2)
    initModalSource @ examples.js:96 
    (anonymous) @ examples.js:3 
    e @ jquery.min.js:2 
    t @ jquery.min.js:2 
    setTimeout (async) 
    S.readyException @ jquery.min.js:2 
    (anonymous) @ jquery.min.js:2 
    e @ jquery.min.js:2 
    t @ jquery.min.js:2 
    setTimeout (async) 
    (anonymous) @ jquery.min.js:2 
    c @ jquery.min.js:2 
    fireWith @ jquery.min.js:2 
    fire @ jquery.min.js:2 
    c @ jquery.min.js:2 
    fireWith @ jquery.min.js:2 
    t @ jquery.min.js:2 
    setTimeout (async) 
    (anonymous) @ jquery.min.js:2 
    c @ …
Run Code Online (Sandbox Code Playgroud)

javascript jquery laravel laravel-blade jquery-keditor

5
推荐指数
1
解决办法
2965
查看次数

无法将变量传递给 Laravel x 组件

我正在 Laravel 8 中的某些地方使用 x 组件构建一个网页。组件是存在于所有页面中的模式,但其内容必须根据调用它的页面而改变。

我的想法如下:

  1. IndexController使用PageModel将$pageid传递给index.blade视图
  2. index.blade将$pageid传递给x-insert-section组件
  3. x-insert-section组件在 @switch 指令中使用它来显示每页所需的内容

问题是x-insert-section似乎没有在$pageid中接收任何值。

代码如下:

我的 IndexController.php


namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Models\Page;
use App\Models\Entry;
use Illuminate\Http\Request;

class IndexController extends Controller
{
    public function init(Request $request)
    {

        $page = Page::where('slug', '/')->first();

        return view('index', [
            'page' => $page,
            'entries' => Entry::where('page', $page->id)->get(),
            'pageid' => $page->id
        ]);
    }
}

Run Code Online (Sandbox Code Playgroud)

index.blade.php 加载 x 组件的部分

    <x-insert-section :pageid="$pageid"></x-insert-section>
    <x-insert-jumbo-image :pageid="$pageid"></x-insert-jumbo-image>
Run Code Online (Sandbox Code Playgroud)

InsertSection.php …

php laravel laravel-blade

5
推荐指数
1
解决办法
9788
查看次数

使用 Laravel 8 和 Inertia 的 Vue 2 种不同的刀片根模板?

所以我正在使用 Inertia 和 Vue 开发 Laravel 8 应用程序。

这个想法是,大多数页面都是 Laravel + Blade(有利于 SEO、快速加载等...),但对于需要大量用户交互的选定页面,我在 Blade 模板中插入一个 Vue 组件,其中需要交互即将发生。

return Inertia::render('vueComponent')对于 Inertia,这是通过在 Laravel Route 调用的 Controller 中调用 Vue 组件来完成的。数据可以传递到 Vue 实例,甚至传递到 Blade 模板,所以这很好(见下文)。

namespace App\Http\Controllers;
use Inertia\Inertia;

class RangePageController extends Controller
{
    public function show(string $lang='fr')
    {
        // Strip the trailing slash from $lang
        $lang = Str::before($lang, '/');

        return Inertia::render('ProductsGallery', ['bar' => "Hello World"])->withViewData(['lang' => $lang]);
    }
}
Run Code Online (Sandbox Code Playgroud)

默认情况下,文件“/resources/views/app.blade.php”使用 Vue 组件呈现,替换 @inertia 指令(加上一些 Vue 数据)。整洁的。

默认情况下,使用 Blade 布局文件“app.blade.php”。该文档指定可以更改默认值:Inertia\Inertia::setRootView('name');

问题:有没有办法在从控制器调用不同页面时选择不同的 …

inertiajs laravel vue.js laravel-blade

5
推荐指数
1
解决办法
4305
查看次数

无法访问视图内的 Blade 组件变量

我在 Laravel 中遇到了这个非常奇怪的问题。

我遇到一个问题,我的组件视图之一无法读取其类中定义的变量。这有点奇怪,因为我的项目中运行了几个组件,除了这个之外,它们都工作正常。

所以我创建了一个新的 Laravel 项目来测试一些东西(想检查问题是否出在我这边,也许我以某种方式弄乱了项目文件)。

我使用在空白项目上创建了一个新组件php artisan make:component Test

然后我简单地将一个测试变量添加到类组件中,如下所示:

<?php

namespace App\View\Components;

use Illuminate\View\Component;

class Test extends Component
{

    public $test;

    /**
     * Create a new component instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->test = "testing";
    }

    /**
     * Get the view / contents that represent the component.
     *
     * @return \Illuminate\View\View|string
     */
    public function render()
    {
        return view('components.test');
    }
}
Run Code Online (Sandbox Code Playgroud)

并尝试在视图中访问它,如下所示:

<div>
    <p> {{$test}} </p>
</div>
Run Code Online (Sandbox Code Playgroud)

由于某种原因,这不起作用,我不明白为什么。它只是说这$test是未定义的。也许我应该指出,我是 Laravel 的初学者,所以如果我犯了一些明显的错误,请原谅。这看起来很奇怪,这不适用于一个空白项目。 …

php laravel laravel-blade

5
推荐指数
1
解决办法
4548
查看次数

Laravel 组件:{{ slot }} 中的默认内容

在旧式的 Laravel Blade 模板中,我们使用@section('section-name')以下方式:

{{-- h1para.blade.php --}}
<h1>
    @section('heading')
        Heading from Template
    @endsection
</h1>
<p>
    @yield('details')
</p>
Run Code Online (Sandbox Code Playgroud)

然后扩展该模板:

{{-- content.blade.php --}}
@extends('h1para')

@section('details')
    Content from content page
@endsection
Run Code Online (Sandbox Code Playgroud)

在上面,我渲染的 HTML 输出如下所示,因为'heading'扩展文件中的“缺失”部分意味着我们默认返回模板中的内容:

<h1>Heading from Template</h1>
<p>Content from content page</p>
Run Code Online (Sandbox Code Playgroud)

但在新的组件做事方式中,我这样做:

<h1>Heading from Template</h1>
<p>Content from content page</p>
Run Code Online (Sandbox Code Playgroud)

如果您还没有收集到,问题是:如何为槽的内容设置默认值,这样如果扩展组件/模板中没有提供它,它就会回退到该默认值?

(我已经完成了搜索,但无法找到之前提出的相同问题)


编辑:

我应该补充一点,我已经看到了解决方案(在 Laravel 文档中):

{{-- .../components/h1para.blade.php --}}
<h1>{{ $heading }}</h1>
<p>{{ $slot }}</p>
Run Code Online (Sandbox Code Playgroud)

但这似乎仅适用于默认值是易于管理的短字符串的情况。如果默认是很长的 HTML 流,那么它就无法满足我的需求。


编辑2:

重申一下:问题的关键在于默认内容可能是一长串 HTML。通过传入字符串(无论是否格式化为 HTML)来解决问题无法满足我的实际需求。

laravel laravel-blade laravel-components

5
推荐指数
1
解决办法
3312
查看次数

Laravel-Vite 将 scss 和 js 编译到单独的 public/asset 文件夹

所以之前,用laravel MIX,在webpack.mix.js文件中,你可以这样写

mix.js('resources/js/app.js', 'public/js')
    .js('resources/js/header.js', 'public/js')
    .sass('resources/sass/app.scss', 'public/css')
    .sass('resources/sass/main.scss', 'public/css')
    .sass('resources/sass/header.scss', 'public/css')
Run Code Online (Sandbox Code Playgroud)

并将其public/asset单独编译。就像 JS 文件将被编译为public/asset/jssass 文件一样public/asset/css。当您将文件放入head视图blaze.php中时,您只需编写

<link rel="stylesheet" href="{{ asset('css/app.css') }}">
<link rel="stylesheet" href="{{ asset('css/main.css') }}">
<link rel="stylesheet" href="{{ asset('css/header.css') }}">

<script type="text/javascript" src="{{ asset('js/app.js') }}"></script>
<script type="text/javascript" src="{{ asset('js/header.js') }}"></script>
Run Code Online (Sandbox Code Playgroud)

我如何将其与现在的 Laravel-Vite 结合起来?因为当我运行npm run dev单独的文件scssjs在一个文件夹中一起编译时,该文件夹是public/build/assets/. 他们没有区分js文件是否进入js文件夹和scss文件是否进入css文件夹。

这是我的样子vite.config.js

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export …
Run Code Online (Sandbox Code Playgroud)

laravel laravel-blade vite laravel-vite

5
推荐指数
1
解决办法
2110
查看次数