Blakeのコメントに基づいて、私は次のメソッドを作成し、それをコンストラクタで呼び出します。各要求の後、デバッグ可能な新しいテストファイルが作成されます。
private function createTest($params,$method)
{
$inputs=print_r($params,1);
$method=strtolower($method);
$method2=($method=='put' || $method=='delete')?'post':$method;
$html=$this->createTestInputs($params,null,null); //array, previous inputs, name prefix
$html=<<<eod
<p>URL: $_SERVER[REQUEST_URI]</p>
<p>METHOD: $method</p>
<p>INPUTS:<pre>$inputs</pre></p>
<form action="$_SERVER[REQUEST_URI]" method="$method2">
$html
<input type="hidden" name="_METHOD" value="$method"/>
<input type="submit" value="Test"/>
</form>
eod;
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/test.php', $html);
}
private function createTestInputs($params,$html,$prefix)
{
foreach($params as $name=>$value) {
if(is_array($value)) {
$html=$this->createTestInputs($value,$html,$name);
}
else {
$html.="<input name='".($prefix?$prefix.'['.$name.']':$name)."' type='hidden' value='$value' />\n";
}
}
return $html;
}
多くの場合、このようなフレームワークで動詞を偽装するための隠れた入力値があります。 ''または 'name = '_ method''のようなものが一般的に好きなのですか? – Blake
@Blakeそれがあれば大丈夫でしょう。 – user1032531
これを読んだことがありますか:http://docs.slimframework.com/routing/put/ - 動詞を変更するために必要な隠された入力を参照してください – Blake