laravel-blade 相关问题

Blade是Laravel提供的简单而强大的模板引擎。与其他流行的PHP模板引擎不同,Blade不会限制您在视图中使用纯PHP代码。

spatie/laravel-html 是废弃的 laravelcollective/html 的良好替代品吗?

laravelcollective/html 已被放弃。我正在寻找可靠的替代品。许多人说 spatie/laravel-html 是不错的选择。但我面临着缺乏文档的问题。 示例来自

回答 1 投票 0

如何在 Laravel 中显示警告和弃用消息

如果我编写一些带有弃用通知的 PHP 代码,它会显示在本地环境中。 示例:index.php 如果我编写一些带有弃用通知的 PHP 代码,它会显示在本地环境中。 示例:index.php <?php function super(string $test='', string $essai) { return 'toto'; } super('sy', 1); exit; 显示: Deprecated: Optional parameter $test declared before required parameter $essai is implicitly treated as a required parameter in /var/www/public/index.php on line 9 这很好。 但是 Laravel 控制器中的完全相同的代码不会显示,并且不会存储在任何日志文件中。 我将配置 app.env 设置为“local”,将 app.debug 设置为 true,将 app.log_level 设置为“debug”。 知道我错过了什么吗? 根据文档: 记录弃用警告 PHP、Laravel 和其他库经常通知其用户某些 它们的功能已被弃用,并将在将来被删除 版本。如果您想记录这些弃用警告,您可以 在您的中指定您首选的 deprecations 日志通道 应用程序的 config/logging.php 配置文件: 'deprecations' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), 'channels' => [ ... ] 或者,您可以定义一个名为 deprecations 的日志通道。如果一个日志通道 如果存在此名称,它将始终用于记录弃用: 'channels' => [ 'deprecations' => [ 'driver' => 'single', 'path' => storage_path('logs/php-deprecation-warnings.log'), ], ],

回答 1 投票 0

Laravel、Blade 和 React js 添加元标记以在服务器端 SEO 上渲染

我正在尝试在服务器端渲染元标记。所以我可以在共享链接上看到这个输出,如下所示: 我尝试了 React-Helmet,但它仅在加载时渲染。 我的控制器 公共函数 home()...

回答 1 投票 0

如何清除Livewire中的“文件多个”

我有一个刀片文件,其中包含以下 livewire(版本 2)代码: <input wire:model="commentFiles" type="file&...</desc> <question vote="0"> <p>我有一个刀片文件,其中包含以下 livewire(版本 2)代码:</p> <pre><code><textarea wire:model="enterComment"</textarea> <input wire:model="commentFiles" type="file" multiple> </code></pre> <p>上传工作就像魅力一样,但尝试在发出后清除文件不起作用 - 这是我的代码中的一些片段:</p> <pre><code>use WithFileUploads; public $commentFiles = []; </code></pre> <p>和上传:</p> <pre><code>foreach ($this->commentFiles as $uploadFile) { $stored = $uploadFile->store('case'); } </code></pre> <p>到目前为止我尝试清除“commentFiles”输入(全部不起作用):</p> <pre><code>$this->commentFiles = []; $this->commentFiles = null; foreach($this->commentFiles AS $file) { $file = null; } </code></pre> <p>之后(有效):</p> <pre><code>$this->enterComment = ''; $this->emit('reloadComments'); </code></pre> <p>大家有什么想法吗?</p> </question> <answer tick="false" vote="0"> <p>为文件上传元素的 id 创建公共属性。</p> <pre><code>public $id = 1; public function upload() { ... $this->id++; } </code></pre> <p>然后将 id 添加到您的上传元素。</p> <pre><code><input id="uploadFile{{ $id }}" wire:model="commentFiles" type="file" multiple> </code></pre> <p>这样,当上传完成时,$id 会递增,这会导致文件上传元素随着 id 的更改而重置。</p> </answer> </body></html>

回答 0 投票 0

@yield 未显示在屏幕上

我刚刚开始学习 Laravel 框架,以便开始一个新项目。但是,我遇到了一个问题,@yield 函数没有在屏幕上显示该部分。但是,如果我...

回答 0 投票 0

尝试从 select2 选择选项检索数据时,未捕获类型错误:jQuery(...).counterUp 不是函数错误

我有一个select2多个框,其中包含从我的Laravel控制器压缩的“package_name”数据和“price”值,以及2个用于总价格和ordered_pacakage的文本框...

回答 1 投票 0

尝试从 select2 选择选项检索数据时,未捕获的类型错误:jQuery(...).counterUp 不是我的控制台上的函数错误

我有一个select2多个框,其中包含从我的laravel控制器压缩的“package_name”数据和“price”值,以及2个用于totalprice和ordered_pacakage的文本框,我

回答 1 投票 0

在刀片组件内获取 Alpine JS 值?

我有一个 x-for 循环: 在模板内,我调用我的刀片组件: 我怎样才能从阿尔卑斯山传递变量...... 我有一个 x-for 循环: <template x-for="item in items" :key="item.id"> 在模板内,我调用我的刀片组件: <x-card /> 如何将变量从 Alpine JS 循环传递到刀片组件? 我已经看到了this并尝试实现它: <template x-for="item in items" :key="item.id"> <x-card ::title="item.title" /> .... 但是我无法在刀片组件内输出标题var。 您可以使用插槽来实现此目的。使用这种技术,您不能直接传递变量,而是传递保存变量的 HTML 元素。 刀片锉刀 <template x-for="item in items" :key="item.id"> <x-card> <x-slot name="foo"> <span x-html="item"></span> </x-slot> </x-card> </template> 组件文件 <div class="card"> {{ $foo }} </div> AlpineJS 是 JavaScript,因此是客户端。刀片是服务器端的。您传递的提示是docs中描述的内容,只是为了防止 Blade 评估该语句,因为 Blade 还可以处理单冒号变量。 如果您的目标是将标题显示为卡片内的文本,请查看 x-text。您应该可以拨打 x-text="item.title"。 :title 应该在项目上设置标题属性。 目前,无法按照您尝试的方式将 alpinejs 变量直接传递到刀片组件。 您必须坚持这两个选项之一: @foreach ( $items in $items ) <x-card :title="$item->title" /> 在你的组件内部你可能会写这样的东西: <div class="card"> <h1>{{$title}}</h1> ... 另一方面,如果你想使用 alpinejs 来做到这一点,你可以这样: <template x-for="item in items" :key="item.id"> <x-card /> 卡内: <div class="card"> <h1 x-text="item.title"></h1> ... 这是可行的,但当然,它会削弱可重用性。所以,更好的选择是 <template x-for="item in items" :key="item.id"> <x-card x-bind:title="item.title" /> 但是,为了使其工作,您的 x-card 组件必须处理 x-bind 属性并初始化卡范围内的变量,如下所示: <div class="card" {{$attributes}} x-data="{ title:"", init() { console.log("init card"); this.$nextTick( () => { this.title = this.$el.attributes.title.value; }); } }">.... 注意 {{$attributes}} 标签。假定您正在渲染刀片组件,如果渲染的刀片组件中不存在 x-bind 属性,则该属性将不起作用。这是在 Blade 组件中使用 alpinejs 时的一个常见陷阱(或者至少对我来说,经常如此)。此外,还需要 $nextTick,因为您的组件将在计算绑定之前运行 init 方法,因此,如果您尝试访问组件 init 方法内的 title 属性,它将为空。 此时,这应该可行。但是,我更愿意做得稍微不同: <div class="card" {{$attributes}} x-data="{ title:"", //no attribute initialization here init(){ .... } }"> 声明如下: <template x-for="item in items" :key="item.id"> <x-card x-init="title = item.title" /> 使用这种方式需要澄清一些事情:由于 x-init 将使用 {{$attributes}} 放置在组件内部,因此我们正在更改 alpine 组件的 title 属性。另一件需要考虑的事情是,x-data 中的 init() 函数首先运行,x-init 属性中的函数随后运行。因此,如果您在初始化时使用标题执行某些操作,则必须使用 this.$nextTick(() => ....) 来确保该值已初始化。 现在,为什么我更喜欢这样做,因为它允许我在需要时继续将其用作常规刀片组件: @props(["title" => ""]); <div class="card" {{$attributes}} x-data="{ title: '{{ $title }}', ... }"> <h1 x-text="title"></h1> 现在,无论我这样做,这都会起作用: <x-card title="TestTitle" /> 或者这个: <x-card x-init="title=item.title" /> 抱歉,如果我太密集了,我对 alpine/livewire 还比较陌生,而且由于缺乏知识,我仍然倾向于过度解释事物。 希望有帮助。

回答 3 投票 0

Laravel:auth()->尝试未定义的方法

一切似乎都正常,但 VSCODE 在尝试时不断报告错误。说方法还没有定义。 一切似乎都正常,但 VSCODE 在尝试时不断报告错误。说方法还没有定义。 <?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; class RegisterController extends Controller { public function index() { return view('auth.register'); } public function store(Request $request) { //validation $this->validate($request, [ 'name' => 'required|max:50', 'username' => 'required|max:50', 'email' => 'required|email|max:250', 'password' => 'required|confirmed', ]); //create new user User::create([ 'name' => $request->name, 'username' => $request->username, 'email' => $request->email, 'password' => Hash::make($request->password), ]); auth()->attempt($request->only('email','password')); return redirect()->route('dashboard'); //sign the user in //redirect } } 是 vscode 的问题还是我遗漏了什么? 所以我想我遵循了 TraversyMedia 的嘉宾 Alex 的相同教程,并偶然发现了同样的问题。 虽然抑制诊断显然有效,但这并不完全是我想要的(不会接受)。 在这种情况下,方法 attempt 存在,所以我只希望很棒的 Intelephense 扩展能够识别它。 我会尽力解释,以便它不仅仅适用于这种情况。 解决方案 Ctrl + click 上的 auth() 应该具有该方法,将我们带到定义函数的 helpers.php 文件。 我们看到一小段带有 if 语句的代码,但无论哪种方式,它都会返回相同的类,即 AuthFactory。 所以我们再次Ctrl + click在AuthFactory上,我们发现自己盯着Factory命名空间的接口Illuminate\Contracts\Auth; 现在我们可以使用 PHPDocs 告诉 Intelephense 可以在此接口的实例上使用名为 attempt 的方法。请注意下面完整代码中interface Factory声明上方的“注释”(PHPDocs)。 <?php namespace Illuminate\Contracts\Auth; /** * @method attempt */ interface Factory { /** * Get a guard instance by name. * * @param string|null $name * @return \Illuminate\Contracts\Auth\Guard|\Illuminate\Contracts\Auth\StatefulGuard */ public function guard($name = null); /** * Set the default guard the factory should serve. * * @param string $name * @return void */ public function shouldUse($name); } 瞧! 注意 只有当该方法确实存在时才应该这样做,否则你就是在自毁棺材。 这是我解决的: 打开扩展设置: 并打开设置的json 您应该考虑的变量是: "intelephense.diagnostics.undefinedTypes": false, "intelephense.diagnostics.undefinedFunctions": false, "intelephense.diagnostics.undefinedConstants": false, "intelephense.diagnostics.undefinedClassConstants": false, "intelephense.diagnostics.undefinedMethods": false, "intelephense.diagnostics.undefinedProperties": false, "intelephense.diagnostics.undefinedVariables": false, 然后按 control + shift+p 并搜索 intelephense,然后选择 index worksapce

回答 2 投票 0

从 Laravel 数据库中删除记录

当我尝试删除一条记录时,它总是删除数据库表中的最后一条记录,而不是我想要删除的记录。 我对 Laravel 相当陌生,我已经用尽了所有选择。 路线 路线::

回答 1 投票 0

如何将可邮寄对象转换为纯文本版本?

我有一个旧的 Laravel 5.7 应用程序。 我有一个可邮寄的 Illuminate\Mail\Mailable 对象。 我想使用 Laravel 默认驱动程序之外的第三方来发送电子邮件。对于 API,我需要...

回答 1 投票 0

Laravel Bootcamp (chirper):路线 [profile.edit] 未定义

我在这里关注 Laravel Bootcamp:Ubuntu 上的 https://bootcamp.laravel.com/blade/creating-chirps(Windows 笔记本电脑上的双启动)。我已经创建了 php 文档的刀片视图模板。我...

回答 1 投票 0

在laravel中,我想在滑块中显示多个产品图像,该图像以JSON格式存储在数据库中

我试图在滑块中显示我的产品图像,这些图像以 JSON 格式存储在数据库表的列中,如下所示 ["1.png","2.png","4.png","5. png&quo...

回答 1 投票 0

我正在寻找一种方法来在我的刀片文件上显示以下模型中的图像

这是我想向此刀片代码添加过滤功能的部分,使其看起来像具有类似过滤功能的投资组合或图像集合,我尝试了不同的方法...

回答 1 投票 0

如何从数据库中删除日期是否为空

我的数据库中有一个值,这里表名:Shift,列名:From。我想在刀片中给出条件,如果移位表的 From 列的值不为空,那么我的数据来自“From&q...

回答 2 投票 0

在 Javascript 文件中使用 Laravel Blade 中的变量

我有变量 const deleteUrl = "{{ url('ingredients') }}/";在我的index.blade.php 文件中。 我想在 index.js 中使用它,但在控制台中我有: 未捕获(承诺中)ReferenceError:删除...

回答 1 投票 0

通过控制器分离有效构建双 API 和视图功能的 Laravel 应用程序

我希望构建我的 Laravel 应用程序,以有效地处理 API 和视图功能,同时避免控制器中的重复。 我如何将我的应用程序设置为具有两个单独的

回答 2 投票 0

Laravel Blade 模板中的 Vue.js v-for 循环

使用 v-for 时我无法绑定索引和值...但是当我 echo 数组时它可以工作... 刀片文件内容:

回答 0 投票 0

路由角色不支持 PATCH 方法。支持的方法:GET、HEAD、POST

我想使用 spatie laravel 授予角色权限。我无法编辑我的角色,因为错误: 路由角色不支持 PATCH 方法。支持的方法:GET、HEAD、POST。 我的代码: 控制...

回答 1 投票 0

使用 Laravel / Blade 中的旧输入定义所选选项

我有这个代码: @foreach($titles 作为 $key => $val) @if (stristr($key, 'isGro... 我有这个代码: <select required="required" class="form-control" name="title"> <option></option> @foreach ($titles as $key => $val) @if (stristr($key, 'isGroup')) <optgroup label="{{ $val }}"> @else <option value="{{ $key }}">{{ $val }}</option> @endif @endforeach </select> 因此,当表格有错误时,我使用Redirect::route('xpto')->withInput()->withErrors($v)行。但我无法重新填充选择字段。有什么方法可以在不使用 JavaScript 的情况下做到这一点吗? 此外,您还可以使用 ? 运算符来避免使用 @if @else @endif 语法。变化: @if (Input::old('title') == $key) <option value="{{ $key }}" selected>{{ $val }}</option> @else <option value="{{ $key }}">{{ $val }}</option> @endif 简单地: <option value="{{ $key }}" {{ (Input::old("title") == $key ? "selected":"") }}>{{ $val }}</option> 除了使用 Input 类,您还可以使用 old() 帮助器来使其更短。 <option {{ old('name') == $key ? "selected" : "" }} value="{{ $value }}"> 解决方案是使用 Blade Directives - If statements 将 Input::old() 与 $key变量进行比较。 @if (Input::old('title') == $key) <option value="{{ $key }}" selected>{{ $val }}</option> @else <option value="{{ $key }}">{{ $val }}</option> @endif 在向您展示的所有方法中,如果您的项目是在 Laravel 9 以上的版本中制作的,我不建议使用它们。 使用这个,因为 laravel 本身已经添加了这个 选中/选择/禁用 <select name="version"> @foreach ($product->versions as $version) <option value="{{ $version }}" @selected(old('version') == $version)> {{ $version }} </option> @endforeach </select> <select name="gender" class="form-control" id="gender"> <option value="">Select Gender</option> <option value="M" @if (old('gender') == "M") {{ 'selected' }} @endif>Male</option> <option value="F" @if (old('gender') == "F") {{ 'selected' }} @endif>Female</option> </select> 经过一番尝试后,我想出了这个,它看起来效果非常好 <select name="options[]" id="options" class="form-control" multiple> @foreach($settings->includes->get('optionList') as $option) <option value="{{ $option->id }}" {{ (collect(old('options'))->contains($option->id)) ? 'selected':'' }}>{{ $option->name }}</option> @endforeach </select> 我在利用收集功能时可能是 100% 错误,但它在我的许多测试中运行良好。在看到网站上的其他一些帖子后,我看到有人建议利用 in_array($needle, $array) 函数,但在注意到如果我的 old('options') 为 null 时,它会出错,因为它需要 in_array 要求,我敢打赌猜出一个数组。因此,在找到这个尽管丑陋的解决方案的解决方案后,我使用了收集方法,因为毕竟我们正在使用幼虫!无论如何,丑陋的解决方案如下 @if (old("options")){{ (in_array($option->id, old("options")) ? "selected":"") }}@endif 内联但对我来说看起来很丑的人所以长话短说我正在使用以下内容 {{ (collect(old('options'))->contains($option->id)) ? 'selected':'' }} 希望这对其他人有帮助! 这似乎不适用于非多重选择字段,但我会用一个适用于该字段的字段返回。 我已更改代码以在标题值中包含 '',因为没有引号它无法工作 <select class="form-control" name="team" id="team"> <option value="">---------Choose Team---------</option> @foreach($teams as $team) <option value="{{$team->id}}" {{(old('team')==$team->id)? 'selected':''}}>{{$team->name}}</option> @endforeach </select> eg.<select name="title"> <option value="1" {{ old('title') == '1' ? 'selected' : '' }}> Item 1 </option> <option value="2" {{ old('title') == '2' ? 'selected' : '' }}> Item 2 </option> </select> Laravel 6 或更高版本: 只需使用 old() 函数即可 @if (old('cat')==$cat->id),它将为您完成其余的工作。 其工作原理:选择标签将所选选项值存储到其名称属性中,在下面的情况下,如果您选择任何选项,它将存储到cat中。第一次加载页面时,cat 内没有任何内容,当用户选择一个选项时,所选选项的值将存储到 cat 中,因此当用户重定向时,old()函数从 cat 中提取先前的值。 {!!Form::open(['action'=>'CategoryController@storecat', 'method'=>'POST']) !!} <div class="form-group"> <select name="cat" id="cat" class="form-control input-lg"> <option value="">Select App</option> @foreach ($cats as $cat) @if (old('cat')==$cat->id) <option value={{$cat->id}} selected>{{ $cat->title }}</option> @else <option value={{$cat->id}} >{{ $cat->title }}</option> @endif @endforeach </select> </div> <div class="from-group"> {{Form::label('name','Category name:')}} {{Form::text('name','',['class'=>'form-control', 'placeholder'=>'Category name'])}} </div> <br> {!!Form::submit('Submit', ['class'=>'btn btn-primary'])!!} {!!Form::close()!!} <option value="{{ $key }}" {{ Input::old('title') == $key ? 'selected="selected"' : '' }}>{{ $val }}</option> <select class="form-control" name="kategori_id"> <option value="">-- PILIH --</option> @foreach($kategori as $id => $nama) @if(old('kategori_id', $produk->kategori_id) == $id ) <option value="{{ $id }}" selected>{{ $nama }}</option> @else <option value="{{ $id }}">{{ $nama }}</option> @endif @endforeach </select> 这会对你有帮助,如果存在就与旧的比较,如果不存在则与默认值比较 <select name="select_name"> @foreach($options as $key => $text) <option {{ ($key == old('select_name',$default))?'selected':'' }}> {{ $text }} </option> @endforeach </select> $default是从控制器注入到视图的值 Laravel 8.59.0 的简短而干净的使用示例(旧版本的预选编辑表单) 您可以将其用于您的编辑页面。它带有数据库中的默认选择,如果您提交未通过验证表单,则会通过包含 old 来返回答案。 <select name="brand_id"> @foreach ($brands as $brand) <option value="{{ $brand->id }}" @if ($product->brand_id === $brand->id || old('brand_id') === $brand->id) selected @endif>{{ $brand->title }}</option> @endforeach </select> 我的解决方案是循环,只是为了避免重复选项 <select class="form-control" name="status" > <?php $lists = ['Current', 'Win', 'Lose']; ?> @foreach($lists as $list) <option value={{$list}} {{(old('status') == $list?'selected':'')}} >{{$list}}</option> @endforeach </select> 好吧,我的 2 美分,使用 Laravel 的 old() 函数的默认值。 <select name="type"> @foreach($options as $key => $text) <option @if((int) old('type', $selectedOption) === $key) selected @endif value="{{ $key }}">{{ $text }}</option> @endforeach </select> <select style="width: 100%;" name="id_driver" id="id_driver" > <option value="" @if (old('id_driver') == "") selected @endif>Select</option> @foreach(\App\Driver::all() as $driver) <option value="{{$driver->id}}" @if (old('id_driver') == $driver->id) selected @endif >(#{{$driver->id}}) {{$driver->business_name}} </option> @endforeach </select> 许多答案都展示了使用三元运算符的一个衬垫,但我认为使用 @if 更具可读性,至少对于初学者来说是这样。如果没有 else 语句,以下内容就足够了。 <option value="{{ $key }}" @if(old('title')===$key) selected @endif>{{ $val }}</option> 从 Laravel 9 开始,我遵循的方法是 如果选项在视图中被硬编码: <option value="male" {{old('gender', $customer['gender']) === 'male' ? "selected" : ''}}> Male </option> 如果选项从控制器作为数组传递下来: @foreach ($genders as $gender) <option value="{{$gender}}" {{ old('gender', $customer['gender']) === $gender ? "selected='selected'" : '' }}> {{ucwords($gender)}} </option> @endforeach PS:冒昧考虑一下客户模型和性别属性的例子。 对于 Laravel 9,您可以使用这个作为示例。我认为这个有效。 <select name="version_id" class="form-control custom-select"> <option value="">Select Version</option> @foreach($versions as $version) <option value="{{ $version->id }}" {{ old('version_id', $apps->version_id) == $version->id ? 'selected' : null}}>{{ $version->name }}</option> @endforeach </select> 如果您想要编辑数据,这对于 Laravel 中的下拉菜单可能很有用,但是当您单击编辑时,会选择旧数据而不是不选择任何数据。 <select> @if(old('value') =={{$key}}) <option value="value" selected>{{$value}}</option> @else <option value="value">{{$value}}</option> @endif </select> 考虑到用户还想编辑他们之前的输入, <select name="title"> @foreach ($titles as $key => $value) <option value="{{$value->id}}" {{(old('title', $user->title_id) == $value->id ? 'selected' : '')}} > {{$value->name}} </option> @endforeach </select> old('title', $user->title_id) 返回用户第一次保存的title_id,如果验证失败则返回用户选择的title_id。然后如果它与当前选项 id 匹配,则它被选中。 通过错误验证实现改进 CodeToLife 的答案,如下所示 <div class="form-group row"> <label for="person-field" class="col-md-4 col-form-label text-right">First Person</label> <div class="col-md-6"> <select id="person-field" class="custom-select select2 @error('person') is-invalid @enderror" name="person" required> <option></option> @foreach(\App\User::all() as $user) <option value="{{$user->id}}" @if (old('person') == $user->id) selected @endif>{{$user->name}} </option> @endforeach </select> @error('person') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> 打字较多,但非常清晰。我在课堂上使用它来演示它是如何工作的。不建议用于生产。 @if (old('typeid')) @if ($type->id == old('typeid')) <option value="{{ $type->id }}" selected> @else <option value="{{ $type->id }}"> @endif @else @if ($type->id == $event->typeid) <option value="{{ $type->id }}" selected> @else <option value="{{ $type->id }}"> @endif @endif

回答 0 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.