No, it is not possible to call a certain method by action
of the form, at least not directly, to action
is to access a service (url) in your case I assume it will be a php script:
Note that if action
is to run in the same script/file where the form submits most recommended is neither set an action.
1. Example of how to do in your case, if the script that processes the data sent is another file:
<form method="post" action="Produto.php">
...
</form>
Product.php
class Produto {
public function insere($dados) {
$nome = $dados['nome'];
$descricao = $dados['descricao'];
$preco = $dados['preco'];
...
}
}
if($_SERVER['REQUEST_METHOD'] == 'POST') { // aqui é onde vai decorrer a chamada se houver um *request* POST
$product = new Produto;
$product->insere($_POST);
}
2. If the script is in the same service (url) from where the data is sent (submission form) can:
<?php
class Produto {
public function insere($dados) {
$nome = $dados['nome'];
$descricao = $dados['descricao'];
$preco = $dados['preco'];
...
}
}
if($_SERVER['REQUEST_METHOD'] == 'POST') { // aqui é onde vai decorrer a chamada se houver um *request* POST
$product = new Produto;
$product->insere($_POST);
}
?>
<form method="post">
...
</form>
3. For the case of having two forms for example, one to edit, another to add can do:
<form method="post" action="Produto.php">
<input type="hidden" name="method" value="insere">
...
</form>
<form method="post" action="Produto.php">
<input type="hidden" name="method" value="edita">
...
</form>
Product.php
class Produto {
public function insere($dados) {
$nome = $dados['nome'];
$descricao = $dados['descricao'];
$preco = $dados['preco'];
...
}
public function edita($dados) {
...
}
}
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['method'])) { // aqui é onde vai decorrer a chamada se houver um *request* POST
$method = $_POST['method'];
if(method_exists('Produto', $method)) {
$product = new Produto;
$product->$method($_POST);
}
else {
echo 'Metodo incorreto';
}
}
Actually they are different files. With different files it is not possible then?
– Marcelo
That’s right. It worked, that’s exactly what I needed, thank you.
– Marcelo