正如问题标题所述:当使用Validator :: extend时,如何访问其他输入属性?
在检查Laravel的内置Validator类时,我可以看到它用于$this->data
访问其他属性; 但是你不能直接$this
在Validator :: extend所需的闭包中使用.
似乎手动扩展Validator类(通过自定义类)是唯一的选择......我是否正确?如果是这样,在我看来这似乎是将验证器转换为包的严重限制,因为每个包都会扩展基本的Validator类,PHP最终将保留最后定义的扩展(从而使其他验证器包无法使用......).或者我错过了什么?
谢谢.
编辑
我也尝试用Jason Lewis的方法将它包装在一个包中,但我一直在BadMethodCallException
说明无法找到验证方法......该软件包符合psr-0并且我很确定它不是命名空间问题.
我无法使用Bootstrap 3.3.4在崩溃事件中找到单击的锚元素:
$('.collapse').on('show.bs.collapse', function (e) {
// Get clicked element that initiated the collapse...
});
Run Code Online (Sandbox Code Playgroud)
我需要这个,因为如果被点击的元素具有某个数据属性,我想防止折叠.另一种选择是通过使用来挂钩.on('click', function())
,但是在点击时还有其他需要运行的事件,所以这似乎不适合我.在DOM中搜索最近的锚点或类似的东西也不会有效,因为彼此旁边有多个锚点.
Homebrew 拥有适用于所有 PHP 版本的内部 PHP 公式。
brew install php
brew install php@8.0
...
Run Code Online (Sandbox Code Playgroud)
但还有一个点击 ( shivammathur/homebrew-php
) 可用于安装 PHP 版本。
brew tap shivammathur/php
brew install shivammathur/php/php
brew install shivammathur/php/php@8.0
...
Run Code Online (Sandbox Code Playgroud)
我遇到过一个博客,内容如下:
您可以使用内置的 php 配方,但我建议使用 shivammathur/homebrew-php Tap。
这让我想知道它存在背后的原因是什么shivammathur/homebrew-php
,而且为什么它比内部公式更值得推荐?
在一个全新的Laravel构建中,我无法覆盖IoC绑定以在应用程序的任何位置工作.
假设一个覆盖核心类的服务提供者,例如缓存:
class NewServiceProvider extends ServiceProvider
{
protected $defer = true;
public function register()
{
$this->app->singleton('cache', function($app) {
return new \stdClass; // demo purpose
});
}
public function provides()
{
return ['cache'];
}
}
Run Code Online (Sandbox Code Playgroud)
然后在app.providers
config 的底部添加提供程序.
现在修改routes.php
为以下内容并检查结果:
Route::get('/', function () {
dd(app('cache'));
});
// Results in an empty stdClass being shown. It works!
Run Code Online (Sandbox Code Playgroud)
然而,启动artisan tinker
并执行相同的操作:
$ php artisan tinker
>>> app('cache')
=> Illuminate\Cache\CacheManager
Run Code Online (Sandbox Code Playgroud)
突然间覆盖不再起作用了......
处理事件侦听器时遇到相同的行为......
这是正常的行为吗?我忽略了什么吗?或者这是某种错误?
我已经在我自己的服务器上成功设置了Satis,并且可以从中提取包.
但是,这些私有包中所需的依赖关系不断被克隆到它们的前沿版本而不是指定的版本约束.我认为Satis正在创建最新开发版本的本地镜像.但是我不想拥有本地镜像,我只需要它们直接从Packagist安装.
那么我如何设置项目/包/ Satis以在从Packagist安装的那些私有包中具有依赖性?
谢谢.
这是我的Satis构建文件:
{
"name": "Package Server",
"homepage": "http://packages.URL",
"repositories": [
{
"type": "vcs",
"url": "git@bitbucket.org:USERNAME/REPO.git",
"options": {
"ssh2": {
"username": "USERNAME",
"pubkey_file": "PUBFILE",
"privkey_file": "PRIVATEFILE"
}
}
}
],
"require-all": true
}
Run Code Online (Sandbox Code Playgroud)
这是需要私有包的项目的composer.json文件(包没有标记版本):
{
"name": "Test Project",
"description": "",
"require": {
"php": ">=5.4.0",
"USERNAME/REPO": "*"
},
"repositories": [
{
"type": "composer",
"url": "http://packages.URL"
}
],
"minimum-stability": "dev"
}
Run Code Online (Sandbox Code Playgroud)
这是私有包的composer.json:
{
"name": "USERNAME/RPO",
"description": "",
"require": {
"php": ">=5.4.0",
"illuminate/support": "5.0.*",
"vinkla/hashids": "~1.0"
},
"minimum-stability": "dev"
}
Run Code Online (Sandbox Code Playgroud) 我很好奇如何在多语言应用程序中有效地生成电子邮件。
为了使所有答案一致:假设您有一个典型的商业通讯,其中包含大量图像、标记,当然还有许多文本段落。假设所有文本都不是来自数据库,而是应该是硬编码的。此外,这些段落中的某些词可以加粗、强调、... 时事通讯将在订阅者的首选语言环境中发送。
我怎样才能建立一个系统来处理这个问题?
trans()
在 Laravel 的lang文件夹中引用每个段落并定义所有翻译吗?那么单词标记部分呢?在语言文件中加入 HTML 标签对我来说感觉有些不对。MDN解释了<dl>
,<dt>
和<dd>
标签可用于实现词汇表或键值对列表。
根据maxdesign.com.au(2004 年发表的文章,其陈述可能不准确),使用它们甚至有缺点:
<dt>
定义列表不能包含块级元素内;此外,它们的基本浏览器开箱即用样式可以以最小的努力复制,同时省略上述缺点。
在表格、段落或任何其他元素上使用 HTML 描述列表是否有任何切实的好处(在语义、搜索引擎优化等方面)?
与confirmation
规则类似,我正在创建一个基于另一个属性值的验证规则.根据我的发现,实现这一目标的唯一方法是扩展Validator类并获取值$this->data
.
文档说扩展Validator然后用于Validator::resolver
注册新的扩展类.这样可以正常工作,但仅在单个解析器的情况下,因为似乎每个后续定义的解析器都会覆盖前一个解析器.
怎样才能解决这个问题?我们如何定义仍然可以访问其他属性的自定义验证器,而无需将所有方法放在同一个类中......?
谢谢
//
注意:我问这个是因为我想发布一些验证器软件包,但是按照上面的推理,如果有人安装了多个软件包,它们就变得毫无用处......
我有一些与彼此相关的模型,如下所示:
Order
- hasMany(CartItem)
- hasManyThrough(Product, CartItem)
CartItem
- belongsTo(Order)
- hasOne(Product)
Product
- belongsTo(CartItem)
Run Code Online (Sandbox Code Playgroud)
通过调用动态属性和方法表单(例如$order->products
,$order->products()
对于Order模型),验证所有关系都在工作
现在我想删除与特定订单相关的所有产品,所以我尝试了这个(订单ID = 3):
Order::find(3)->products()->delete()
Run Code Online (Sandbox Code Playgroud)
但这不起作用.由于某种原因,我收到错误消息,指出无法找到加入列:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'cart_items.order_id' in 'where clause' (SQL: delete from `products` where `cart_items`.`order_id` = 3)
Run Code Online (Sandbox Code Playgroud)
然而,原始SQL输出(使用toSql()
)确实包括连接...
谁知道这里有什么问题?
假设你有这个SASS定义(不真实的例子):
.class {
margin: 1px;
background: black;
color: white;
&:hover {
color: red;
}
}
a.class {
margin: 1px;
background: black;
color: yellow;
&:hover {
color: blue;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我们可以将a
同一类的规范作为嵌套选择器吗?像这样的东西(伪代码):
.class {
margin: 1px;
background: black;
color: white;
&:hover {
color: red;
}
// Some selector to show that the current class
// should be applied to this element (?)
a.& {
color: yellow;
&:hover {
color: blue;
}
}
}
Run Code Online (Sandbox Code Playgroud)