簡體   English   中英

PHP Laminas DoctrineObjectInputFilter 獲取回調輸入過濾器中其他屬性的值

[英]PHP Laminas DoctrineObjectInputFilter get value of other property in Callback input filter

我正在使用 Laminas DoctrineObjectInputFilter並希望在回調輸入過濾器中獲取其他屬性的值,例如此代碼在擴展DoctrineObjectInputFilterFilter類的 init 函數中

// input filter whose value is required
$this->add([     
        'name' => 'name',
        'allow_empty' => false,
        'filters' => []
]);
// Input filter in which I want value of input name
$this->add([
        'name' => 'value',
        'allow_empty' => true,
        'filters' => [
            [
                'name' => 'Callback',
                'options' => [
                    'callback' => function ($value) {
                        $name = // want to get property name value here

                        if (key_exists($name, $this->applicationConfig) && gettype($value) === 'string') {
                            return trim(strip_tags($value));
                          }
                          else {
                              return trim($value);
                          }

                        return $value;
                    },
                ],
            ],
        ],
    ]);

已檢查$this->getRawValues()但它為所有輸入返回 null。

有點晚了,但我猜你正在搜索$context 由於 name 的值在同一個InputFilter實例中,您可以在回調函數中簡單地使用$context

<?php
declare(strict_types=1);
namespace Marcel\InputFilter;

use Laminas\Filter\StringTrim;
use Laminas\Filter\StripTags;
use Laminas\Filter\ToNull;
use Laminas\InputFilter\InputFilter;
use Laminas\Validator\Callback;

class ExampleInputFilter extends InputFilter 
{
    public function init()
    {
        parent::init();

        $this->add([
            'name' => 'name',
            'required' => true,
            'allow_empty' => false,
            'filters' => [
                [ 'name' => StripTags::class ],
                [ 'name' => StringTrim::class ],
                [
                    'name' => ToNull::class,
                    'options' => [
                        'type' => ToNull::TYPE_STRING,
                    ],
                ],
            ],
        ]);

        $this->add([
            'name' => 'value',
            'required' => true,
            'allow_empty' => true,
            'filters' => [],
            'validators' => [
                [
                    'name' => Callback::class,
                    'options' => [
                        'callback' => function($value, $context) {
                            $name = $context['name'];
                            ...
                        },
                    ],
                ],
            ],
        ]);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM