Запускать элементы в списке, если они существуют в недоступном [дубликат]

    <?php
include_once('insert.php');
if(isset($_POST['submit']))
{
     $name = $_POST['name'];
     $email = $_POST['email'];
     $address = $_POST['address'];
     $adm= $_POST['admission'];
    mysqli_query("INSERT INTO students_recrod(name,email,address,joining_date) VALUES ('$name', '$email','$address', '$adm')");
}
?>


<!DOCTYPE html>
<html>
<head>
    <title>Sign up form</title>
</head>
<body>
<form action="" method="post" id="">
<label>Name</label><br>
<input type="text" name="name" id=""><br>

<label>Email</label><br>
<input type="text" name="email" id=""><br>

<label>Address</label><br>
<input type="text" name="address" id=""><br>

<label>Admission date</label><br>
<input type="text" name="admission" id=""><br><br>

<input type="submit" name="submit" id="">
</form>
</body>
</html>
4
задан udondan 22 January 2016 в 10:04
поделиться

2 ответа

Вы можете использовать default() для обратной совместимости.

- file:
    path: "{{ item.name | default(item) }}"
    mode: "{{ item.mode | default(omit) }}"
    state: directory
  with_items: your_list

Если item имеет свойство name, используйте его, иначе просто используйте сам элемент.

То же самое касается всех других свойств, которые могут быть у вас в вашем dict. Специальная переменная omit опускает всю задачу из задачи, как если бы модуль не был передан никакому модулю file. Конечно, вы можете установить любое другое значение по умолчанию.

Ссылки на документацию:

4
ответ дан udondan 15 August 2018 в 14:22
поделиться
  • 1
    Хм, я был уверен, что попробовал это. Спасибо, это хорошее и чистое решение! Хотя это немного более общий, чем мой вопрос позволил бы (поскольку я ошибочно искал решение для проверки типов), он точно соответствует требованиям. – Joost 22 January 2016 в 09:30
  • 2
    Я знаю, это действительно не отвечало на ваш вопрос. Afaik нет простого способа проверить типы. Jinja2 имеет тестовый фильтр | string, но я никогда не работал. Фильтр | iterable работает - к сожалению, строка также повторяется ... Можно было создать для него настраиваемые плагины фильтров, но я думал, что это будет немного накладных расходов, если можно просто работать с default. По крайней мере, в этой ситуации. – udondan 22 January 2016 в 10:01
  • 3
    Да, в том числе настраиваемый фильтр, который может быть простым однострочным diff, создает нежелательный беспорядок. – Joost 22 January 2016 в 10:03

Самое быстрое решение состоит в том, чтобы иметь две задачи, и они запускаются с противоположными условиями. К сожалению, все элементы в списке должны будут использовать одну и ту же форму (вы не можете смешивать и сопоставлять строки и dicts).

- name: create dirs (strings)
  file:
    ...
  with_items: items
  when: string(items[0])

- name: create dirs (dicts)
  file:
    ...
  with_items: items
  when: not string(items[0])
1
ответ дан T0xicCode 15 August 2018 в 14:22
поделиться
  • 1
    Это говорит мне ERROR! 'string' is undefined. Можете ли вы показать мне ссылку на документы для этой функции? – Joost 21 January 2016 в 20:39
  • 2
    @Joost Я использовал документацию jinja2, а не документацию. В любом случае ответ Удондана намного лучше. – T0xicCode 22 January 2016 в 20:40
Другие вопросы по тегам:

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