В PHP функции не будут оценены в строках, потому что существуют различные правила для переменных.
Параметр действия к тегу в HTML не должен ссылаться на функцию PHP, которую Вы хотите выполнить. Действие должно относиться к странице на веб-сервере, который обработает вход формы и возвратит новый HTML пользователю. Это может быть тем же местоположением как Сценарий PHP, который производит форму, или некоторые люди предпочитают делать отдельный файл PHP для обработки действий.
Базовый процесс является тем же так или иначе:
Простой пример был бы:
';
}
?>
Для будущей информации я рекомендую читать учебные руководства PHP: http://php.net/tut.php
Существует даже раздел о Контакте с формами.
Вот версия кода dmcnally, которая не позволяет передавать аргументы , заставляя работать «should use_layout» и «should_not use_layout» (чтобы утверждать, что контроллер использует любой макет или никакой макет, соответственно, из которых я бы ожидал, что только второй будет полезен, поскольку вы должны быть более конкретными, если он использует макет):
class UseLayout
def initialize(expected = nil)
if expected.nil?
@expected = nil
else
@expected = 'layouts/' + expected
end
end
def matches?(controller)
@actual = controller.layout
#@actual.equal?(@expected)
if @expected.nil?
@actual
else
@actual == @expected
end
end
def failure_message
if @expected.nil?
return 'use_layout expected a layout to be used, but none was', 'any', @actual
else
return "use_layout expected #{@expected.inspect}, got #{@actual.inspect}", @expected, @actual
end
end
def negative_failure_message
if @expected.nil?
return "use_layout expected no layout to be used, but #{@actual.inspect} found", 'any', @actual
else
return "use_layout expected #{@expected.inspect} not to equal #{@actual.inspect}", @expected, @actual
end
end
end
def use_layout(expected = nil)
UseLayout.new(expected)
end