2015-04-09 2 views
0

Теперь я ищу Event_Handler & Dispatcher класс, и был тот момент, чтобы сделать отдельный класс для каждого события.Отправить другое значение ввода

Например, у меня есть база данных с некоторой записью, и я хочу выбирать между двумя действиями. Редактировать. & Просмотреть записи.

Поэтому мне нужно создать два файла class.Handler_Edit & class.Handler_View, а затем в зависимости от нажатия ввода

<input type="submit" name="action" value="Edit"/> 
OR 
<input type="submit" name="action" value="View"/> 

мне нужно получить значение из $_POST['action'] и позвонить, например, правильный класс

'class.Handler_' . $_POST['action'] . '.php' 

, а затем начать, например,

class.Handler_View.php 

(в зависимости от выбранного входа).

Все классно, работает! Но проблема в том, что я использую русские слова для значения ввода. Не установлено value="View" & value="Edit", но value="Посмотреть" & value="Редактировать".

И тогда я не могу назвать класс

class.Handler_Редактировать.php 

Я нашел решение, что я могу использовать buttons вместо inputs, например:

<button type="submit" name="action" value="edit">Редактировать</button>`. 

Но это правильный способ решить эта проблема?

Возможно, это не лучшее решение отказаться от использования inputs и использовать только buttons?

+0

В идеале вы меняете действие = "", чтобы отразить действие. Не зависеть от значения переменной $ _POST var, а не по URL. Например, myform/edit, или myform/view –

ответ

0

Лучший способ решить эту проблему - использовать инструкции if! Вот пример кода:

if ($_POST['action'] == "Посмотреть") { 
    // do something with 'class.Handler_View.php' 
} else if ($_POST['action'] == "Редактировать") { 
    // do something with 'class.Handler_Edit.php' 
} else { 
    //uh oh, you didnt get View or Edit! 
} 

Это также намного безопаснее, так как конечный пользователь может изменить значение формы очень легко! Также с помощью этого метода вы сможете использовать либо кнопки, либо входы!

+1

Спасибо, но не лучшее решение. Если у меня будет более двух действий, я должен проверить их все, и их будет слишком много, если .... В этом случае лучше использовать ассоциативный массив. 'array ('Редактировать' => 'edit', ...);' – kxc

+0

@kxc Очень верно. Похоже, вы нашли свое решение! – jbman223

Смежные вопросы