Zend_Form: как проверить, что 2 поля идентичны

Цикл работает только для задачи, к которой он прикреплен. Чтобы обернуть несколько задач в цикл, вам нужно разделить их на другой файл, использовать оператор include для их загрузки, а затем присоединить цикл к этому оператору include.

В твоем случае ничего этого не требуется. Я думаю, что это должно сделать то, что вы ищете, предполагая, что file1.txt содержит список имен файлов, по одному на строку & amp; без расширения файла:

- host: localhost
  connection: local
  tasks:
    - name: Convert each file listed in file1.txt
      copy:
        dest: "./{{ item | trim }}.json"
        content: "{{ lookup('file', item + '.yml') | from_yaml | to_nice_json }}"
      with_lines: cat ./file1.txt
  • connection: local остановок. Ansible открывает SSH-соединение с локальным хостом.
  • lookup('file', item + '.yml') читает файл. item - это имя переменной по умолчанию, которое используется в циклах для хранения содержимого каждого элемента цикла.
  • with_lines работает только локально, поэтому, если вам нужно выполнить это удаленно, вам нужно будет изменить это [ 119]
7
задан Linger 19 July 2012 в 04:08
поделиться

2 ответа

Когда я искал то же, я нашел это очень хорошо работой универсального Блока проверки допустимости для Идентичных Полей. Я не нахожу его теперь, таким образом, я просто отправляю код...

<?php

class Zend_Validate_IdenticalField extends Zend_Validate_Abstract {
  const NOT_MATCH = 'notMatch';
  const MISSING_FIELD_NAME = 'missingFieldName';
  const INVALID_FIELD_NAME = 'invalidFieldName';

  /**
   * @var array
  */
  protected $_messageTemplates = array(
    self::MISSING_FIELD_NAME  =>
      'DEVELOPMENT ERROR: Field name to match against was not provided.',
    self::INVALID_FIELD_NAME  =>
      'DEVELOPMENT ERROR: The field "%fieldName%" was not provided to match against.',
    self::NOT_MATCH =>
      'Does not match %fieldTitle%.'
  );

  /**
   * @var array
  */
  protected $_messageVariables = array(
    'fieldName' => '_fieldName',
    'fieldTitle' => '_fieldTitle'
  );

  /**
   * Name of the field as it appear in the $context array.
   *
   * @var string
   */
  protected $_fieldName;

  /**
   * Title of the field to display in an error message.
   *
   * If evaluates to false then will be set to $this->_fieldName.
   *
   * @var string
  */
  protected $_fieldTitle;

  /**
   * Sets validator options
   *
   * @param  string $fieldName
   * @param  string $fieldTitle
   * @return void
  */
  public function __construct($fieldName, $fieldTitle = null) {
    $this->setFieldName($fieldName);
    $this->setFieldTitle($fieldTitle);
  }

  /**
   * Returns the field name.
   *
   * @return string
  */
  public function getFieldName() {
    return $this->_fieldName;
  }

  /**
   * Sets the field name.
   *
   * @param  string $fieldName
   * @return Zend_Validate_IdenticalField Provides a fluent interface
  */
  public function setFieldName($fieldName) {
    $this->_fieldName = $fieldName;
    return $this;
  }

  /**
   * Returns the field title.
   *
   * @return integer
  */
  public function getFieldTitle() {
    return $this->_fieldTitle;
  }

  /**
   * Sets the field title.
   *
   * @param  string:null $fieldTitle
   * @return Zend_Validate_IdenticalField Provides a fluent interface
  */
  public function setFieldTitle($fieldTitle = null) {
    $this->_fieldTitle = $fieldTitle ? $fieldTitle : $this->_fieldName;
    return $this;
  }

  /**
   * Defined by Zend_Validate_Interface
   *
   * Returns true if and only if a field name has been set, the field name is available in the
   * context, and the value of that field name matches the provided value.
   *
   * @param  string $value
   *
   * @return boolean 
  */ 
  public function isValid($value, $context = null) {
    $this->_setValue($value);
    $field = $this->getFieldName();

    if (empty($field)) {
      $this->_error(self::MISSING_FIELD_NAME);
      return false;
    } elseif (!isset($context[$field])) {
      $this->_error(self::INVALID_FIELD_NAME);
      return false;
    } elseif (is_array($context)) {
      if ($value == $context[$field]) {
        return true;
      }
    } elseif (is_string($context) && ($value == $context)) {
      return true;
    }
    $this->_error(self::NOT_MATCH);
    return false;
  }
}
?>
3
ответ дан 6 December 2019 в 04:56
поделиться

вот то, как я сделан это :)

создайте вход первичной обработки, затем упаковывают второй вход передачи в ящики и добавляют Идентичный блок проверки допустимости с данными из предыдущего ввода пароля.

$password_2->addValidator('identical', false, $this->_request->getPost('password'));
1
ответ дан 6 December 2019 в 04:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: