Jump to content
JoaoNascimento

Zend Framework 2 + Formulário dinamico

Recommended Posts

JoaoNascimento

Boa tarde meus amigos, mais uma vez preciso da vossa ajuda.

Estou a desenvolver uma plataforma web para um cliente em Zend Framework 2, como nunca tinha experimentado a framework, isto +e novo para mim. Mas agora surgiu um problema, tenho de criar um formulário em que forma de grelha em que cada linha da grelha é uma inserção na tabela base de dados (imagem em baixo)

https://dl.dropboxusercontent.com/u/11513319/Selec%C3%A7%C3%A3o_002.png

As linhas são dinâmicas pois depende de quantos produtos estiverem na base de dados, no controller já consigo ir buscar os dados a base de dados, o problema está mesmo em gerar o formulário.

CONTROLLER

public function preferenciasAction()
{
$clientes_idClientes = (int) $this->params()->fromRoute('idCliente', 0);

if (!$clientes_idClientes) {
return $this->redirect()->toRoute('clientes', array(
'action' => 'index'
));
}

$dbAdapterConfig = array(
'driver' => 'Mysqli',
'database' => 'serrana',
'username' => 'root',
'password' => 'jopemina'
);
$dbAdapter = new Adapter($dbAdapterConfig);

$sql = new Sql($dbAdapter);
$select = $sql->select();
$select->from('produtos');
//$select->where(array('idProdutos' => 2));

$statement = $sql->prepareStatementForSqlObject($select);
$results = $statement->execute();

$returnArray = array();

foreach ($results as $result)
{
$returnArray[] = $result;
}

$preferencias = array();

for ($i = 0; $i //foreach($returnArray as $result)
{
$teste = $this->getPreferenciasTable()->getPreferencias($clientes_idClientes, $returnArray[$i]['idProdutos']);

if($teste == false)
{
$help = new Preferencias();
$preferencias[] = $help;
}
else
$preferencias[] = $teste;
}

$form = new PreferenciasForm(count($returnArray));
$form->bind($preferencias[0]); //testes
$form->bind($preferencias[2]); //testes apenas na view aparece este
$form->get('submit')->setAttribute('value', 'Salvar');

//preparar o formulario para isto tudo

return new ViewModel(array('results' => $preferencias, 'form' => $form, 'clientes_idClientes' => $clientes_idClientes));

}
?>
 

CLASSE QUE TRATA DO FORM

public function __construct($produtos)
{
parent::__construct('preferencias');

for ($i = 0; $i<$produtos; $i++) //só assim consegui colocar a funcionar
{
$this->add(array(
'name' => 'clientes_idClientes',
'type' => 'Hidden',
));

$this->add(array(
'name' => 'produtos_idProdutos',
'type' => 'Hidden',
));

$this->add(array(
'name' => 'segunda',
'type' => 'Text',
));

$this->add(array(
'name' => 'terca',
'type' => 'Text',
));

$this->add(array(
'name' => 'quarta',
'type' => 'Text',
));

$this->add(array(
'name' => 'quinta',
'type' => 'Text',
));

$this->add(array(
'name' => 'sexta',
'type' => 'Text',
));

$this->add(array(
'name' => 'sabado',
'type' => 'Text',
));

$this->add(array(
'name' => 'domingo',
'type' => 'Text',
));

$this->add(array(
'name' => 'submit',
'type' => 'Submit',
'attributes' => array(
'value' => 'GO',
'id' => 'submitbutton',
),
));
}
}
 

Desculpem o código mal estruturado mas já estou nisto há algumas horas. Alguém me pode ajudar?

Share this post


Link to post
Share on other sites
I-NOZex

com tanta coisa, acabei por nem entender onde está exactamente a tua duvida...

dizes que o problema é em gerar o form, certo?

quer dizer, nao sabes como pegar nas inputs todas geradas, e envia-las para o view, é isso?

nao trabalho com zend, mas pode ser que com os meus alguns conhecimentes de framework e mvc te consiga ajudar, uma vez que ainda ninguem se chegou a frente...


B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.