【问题标题】:How to set custom attribute labels for nested inputs in Laravel如何在 Laravel 中为嵌套输入设置自定义属性标签
【发布时间】:2015-12-22 01:11:21
【问题描述】:

我正在尝试在错误消息中获取自定义标签。我的输入是嵌套的,我可以使用点符号来验证它们(例如 POLICY.HOLDER.NAME )。它们必须嵌套并且全部大写以匹配 db 结构,以便我可以轻松地批量分配它们。

resources/lang/en/validation.php 中使用'attributes' => ['POLICY.HOLDER.NAME' => 'Policy Holder'] 中的相同符号不会产生任何结果。

我只是想让它们与我在表单中设置的标签相匹配。

app/Http/Controllers/OfferController.php(只是有趣的部分)

public function postOffer(OfferRequest $request) { //
    $post_data = $request->all();
    if (isset($post_data['POLICY'])) {
        // code to get data from $_POST and assign to models
    }
}

app/Http/Requests/OfferRequest.php

<?php 
namespace App\Http\Requests;

use App\Http\Requests\Request, Auth;

class OfertaRequest extends Request
{

    public function authorize() {
        return Auth::check();
    }

    public function rules()
    {
        return [
            'POLICY.HOLDER.NAME' => 'required',
        ];
    }

    public function forbiddenResponse()
    {
        return Response::make('Permission denied foo!', 403);
    }

}

resources/lang/en/validation.php

'attributes' => [
    'POLICY.HOLDER.NAME' => 'Some custom string here...',
],

如您所见,我尝试在自定义验证属性数组中添加输入名称,但没有成功。这是我将输入留空时收到的错误消息:

政策。持有者。需要一个 m e 字段。

注意空格。我也试过了,还是不行。

【问题讨论】:

  • 您可以添加到目前为止您尝试过的代码吗?例如。控制器、视图、验证码
  • @JamesFlight 我添加了代码
  • SO 上 PHP 聊天室的人说,由于输入名称大写,这可能是 laravel 错误。如果我更改为小写,则不再放置这些空格并且占位符有效。不幸的是,我必须将它们设为大写,因为模型属性和数据库列必须...来自命令链的更上层,我对此没有发言权:))

标签: validation laravel laravel-5.1


【解决方案1】:

明确声明为嵌套数组:

'attributes' => [
    'POLICY' => [
        'HOLDER' => [
            'NAME' => 'Some custom string here...',
        ]
    ]
],

【讨论】:

  • 我从来没有想过,按预期工作。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
  • 2018-01-03
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-02
相关资源
最近更新 更多