У меня есть класс фронт-контроллера. В этом классе у меня есть функция для анализа URL:
public function parseURL()
{
if(isset($_GET['url']))
{
return $url = explode('/',filter_var(rtrim($_GET['url'],'/'),FILTER_SANITIZE_URL));
}
}
Это основано на RewriteRule (что я все равно импортировал в IIS):
Options -Multiviews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Означает ли это, что все мои формы теперь должны использовать GET?
<form action="/controller/action" method="GET">
Разве все не проходит через фронт-контроллер, даже мой CRUD?
/controller/action/id
, например.
Если это имеет значение, я использую IIS. У меня нет скрытых входов для ввода, удаления и т. Д. В настоящее время я не использую AJAX.
Нет, ваши формы все еще могут использовать POST. Я бы посоветовал вам не использовать GET при отправке значений формы, поскольку вы будете загрязнять свой URL данными формы.
Вы также можете легко получить доступ к своим атрибутам GET.
<form action="/controller/action/id" method="POST">
<input type="text" name="someText" />
<input type="submit />
</form>
В PHP вы делаете свой бизнес как обычно:
echo $_POST['someText']; //echos the input from the form control
echo $_GET['url']; //echos "/controller/action/id"
Других решений пока нет …