J'ai un formulaire dans lequel un utilisateur sélectionne un document. Ce document est ensuite enregistré dans le dossier webroot par le contrôleur.Créer un formulaire sans relation avec un modèle dans cakePHP
Cependant, avant qu'elle ne montre même la forme, il me donne une erreur:
Missing Database Table
Error: Table office_layouts for model OfficeLayout was not found in datasource default.
Ce qui est correct, il n'y a pas de table de base de données pour office_layouts. Mais ce n'est pas nécessaire. C'est pourquoi il n'y a pas de table. Le formulaire est simplement téléchargé sur le serveur.
J'ai lu à travers des formes en créant, et ont essayé ce qui suit:
// file: View/OfficeLayout/upload.ctp
echo $this->Form->create(null ,array('type' => 'file')); ?>
<fieldset>
<legend><?php echo __(' Add Layout for ' . $branch); ?></legend>
<?php
echo $this->Form->input('layout',array('type'=>'file'));
?>
</fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
En plus chaning le null
au nom du contrôleur (dans ce cas OfficeLayout
). Je l'ai également supprimé tous les paramètres (thus creating it like so: $this->Form->create()
)
Dans mon contrôleur, je donne les résultats suivants:
public function upload($branch = null) {
$this->set('branch',$branch);
if(isset($this->request->data['OfficeLayout'])) {
$file = $this->request->data['OfficeLayout']['layout'];
if($file['error'] === UPLOAD_ERR_OK && move_uploaded_file($file['tmp_name'],APP . 'docs' . DS . 'layouts' . DS . $branch . '.pdf')) {
$this->Session->setFlash('New layout successfully uploaded.','default',array('class'=>'notification'));
$this->redirect(array('action'=>$branch));
} else {
$this->Session->setFlash('Error uploading layout. Please contact web admin.','default',array('class'=>'error'));
}
}
}
de cette action être appelée avec: domain/office_layouts/upload/branch
.
Chaque fois que je supprime la ligne $this->Form->create()
, elle affiche la vue de téléchargement, mais elle n'est évidemment pas soumise.
Donc, ma question dans ce cas est, comment puis-je créer un formulaire, sans chercher une table dans la base de données?
Ah, c'est génial! :RÉ – Albert