Вы действительно можете редактировать свой код прямо на GitHub. Таким образом, ответ прост, откройте github, затем откройте файл, который вы хотите отредактировать, и нажмите «Изменить» (вверху справа). Сделайте ваши изменения, затем нажмите кнопку фиксации.
На мой взгляд, это чепуха, это займет гораздо больше времени, чем тянуть.
Фреймворки, подобные CodeIgniter, позволяют передавать переменные в контроллер без раскрытия имени переменной -
/controller/action/foo/bar/
обрабатывается как :
function action( $id, $value){
echo $id; // outputs 'foo'
echo $value; // outputs 'bar'
}
http://codeigniter.com/user_guide/general/controllers.html
Мне нравится это, поскольку оно дает вам контроль над тем, сколько параметров будет принимать ваш контроллер, и если важно, чтобы определенные переменные никогда не использовались Вы можете сделать логику или перенаправить соответственно.
var1 / value1 / var2 / value2
действительно не лучший подход, и он злоупотребляет MVC структура контроллер / действие / идентификатор
. Либо вам нужно переосмыслить свой дизайн, использовать POST или параметры запроса. Скорее всего, вы можете переделать дизайн, например, если у вас есть
/search/type/movie/format/divx/year/2000
. Вы можете повторить это как
/movie/divx?year=2000
. Таким образом, ваш контроллер фильма
будет искать фильмы формата divx
, а затем, возможно, использовать вспомогательный или фильтр или сценарий на стороне клиента, чтобы показывать только фильмы, которые соответствуют году == 2000.
У вас есть возможность передавать переменные либо через GET, либо через POST.
GET будет добавлять переменные к URL-адресу, либо в симпатичном формате
/controller/action/var1/value1/var2/value2
, либо традиционным способом
/controller/action/?var1=value1&var2=value2
. В первом случае вам все равно потребуется написать правило перезаписи Apache для извлечения переменных из URL-адреса и маршрутизации в контроллер / действие с правильным набором переменных как часть вашего $ _REQUEST.
Если вы используете POST, вы можете добавлять скрытые значения в каждую форму как способ передачи переменных.
Для переменных, которые вы не хотел бы быть общедоступным, вы можете использовать Sessions для хранения их на стороне сервера.
Вы также можете выполнять запросы GET следующим образом:
www.site.com/controller/action?var1= value1 & var2 = value2
Они будут отображаться в суперглобальном $ _GET.
В зависимости от вашего проекта, вы также можете попробовать установить и прочитать значения, используя сеансы PHP. Эти значения не нужно передавать от сценария к сценарию как значения GET или POST. Недостатком (или положительным моментом) является то, что переменные нельзя просто передать как часть URL (или добавить в закладки).
Я бы избегал подхода «ключ / значение» в стиле Zend, который вы упоминали ранее. Проблема в том, что создание двух разных URL
http://www.example.com/controller/action/var1/value1/var2/value2
http://www.example.com/controller/action/var2/value2/var1/value1
, указывающих на один и тот же ресурс, становится тривиальным. Хотя это работает, часть успеха сред стилей MVC для веб-приложений заключается в том, что они упрощают создание чистой структуры URL-адреса и связывают один URL-адрес на вашем сайте с каждым ресурсом. Подход var1 / value1 / var2 / value2 предлагает небольшое преимущество по сравнению со строками запроса ключ / значение.
Подход, который я выбрал бы здесь, состоит в том, чтобы отказаться от ключей и просто использовать значения
http://www.example.com/example/list/value1/value2/value3
, которые будут переданы в метод действия в виде массива.
class example extends Controller{
public function list($args){
//$args[0] = 'value1';
//$args[1] = 'value2';
//$args[2] = 'value3';
}
}
Делая это таким образом, вы оставляете его до конечные пользователи вашей системы решают, как они хотят обрабатывать переменные в стиле $ GET, поощряя дизайн, который ведет к более чистому, более стабильному, URL одного ресурса.
То, что мне нравится использовать в моих проектах CakePHP, это «именованные параметры». По сути, мои URL выглядят так:
http://example.com/controller/action/param1:value1/param2:value2
Вы можете увидеть еще несколько примеров в руководстве Cake . Я не знаю, поддерживает ли ваш фреймворк это (или Zend), но если пекари сделали это, это можно сделать . : -)