Maison  >  Article  >  développement back-end  >  CakePHP mettre à jour un enregistrement

CakePHP mettre à jour un enregistrement

PHPz
PHPzoriginal
2024-09-10 17:25:51922parcourir

Pour mettre à jour un enregistrement dans la base de données, nous devons d'abord nous procurer une table en utilisant la classe TableRegistry. Nous pouvons récupérer l'instance hors du registre en utilisant la méthode get(). La méthode get() prendra le nom de la table de la base de données comme argument. Désormais, cette nouvelle instance est utilisée pour obtenir un enregistrement particulier que nous souhaitons mettre à jour.

Appelez la méthode get() avec cette nouvelle instance, et transmettez la clé primaire pour trouver un enregistrement, qui sera enregistré dans une autre instance. Utilisez cette instance pour définir les nouvelles valeurs que vous souhaitez mettre à jour, puis appelez enfin la méthode save() avec l'instance de la classe TableRegistry pour mettre à jour l'enregistrement.

Exemple

Apportez des modifications au fichier config/routes.php comme indiqué dans le code suivant.

config/routes.php

<?php use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('/users/edit', ['controller' => 'Users', 'action' => 'edit']);
   $builder->fallbacks();
});

Créez un fichier UsersController.php dans src/Controller/UsersController.php. Copiez le code suivant dans le fichier du contrôleur.

src/controller/UsersController.php

<?php namespace App\Controller;
   use App\Controller\AppController;
   use Cake\ORM\TableRegistry;
   use Cake\Datasource\ConnectionManager;
   class UsersController extends AppController{
      public function index(){
         $users = TableRegistry::get('users');
         $query = $users->find();
         $this->set('results',$query);
      }
      public function edit($id){
         if($this->request->is('post')){
            $username = $this->request->getData('username');
            $password = $this->request->getData('password');
            $users_table = TableRegistry::get('users');
            $users = $users_table->get($id);
            $users->username = $username;
            $users->password = $password;
            if($users_table->save($users))
            echo "User is udpated";
            $this->setAction('index');
         } else {
            $users_table = TableRegistry::get('users')->find();
            $users = $users_table->where(['id'=>$id])->first();
            $this->set('username',$users->username);
            $this->set('password',$users->password);
            $this->set('id',$id);
         }
      }
   }
?>

Créez un répertoire Utilisateurs sur src/Template, ignorez s'il est déjà créé, et sous ce répertoire, créez une vue appelée index.php. Copiez le code suivant dans ce fichier.

src/Template/Users/index.php

<a href="add">Add User</a>
"; echo ""; echo ""; echo ""; echo ""; endforeach; ?>
ID Username Password Edit Delete
".$row->id."".$row->username."".$row->password."EditDelete

Créez un autre fichier View sous le répertoire Utilisateurs appelé edit.php et copiez-y le code suivant.

src/Template/Users/edit.php

<?php echo $this->Form->create(NULL,array('url'=>'/users/edit/'.$id));
   echo $this->Form->control('username',['value'=>$username]);
   echo $this->Form->control('password',['value'=>$password]);
   echo $this->Form->button('Submit');
   echo $this->Form->end();
?>

Exécutez l'exemple ci-dessus en visitant l'URL suivante et cliquez sur Modifier le lien pour modifier l'enregistrement.

http://localhost/cakephp4/users

Sortie

Après avoir visité l'URL ci-dessus, il affichera les enregistrements dans le tableau des utilisateurs comme indiqué ci-dessous −

After Visiting

Cliquez sur le bouton Modifier et l'écran suivant s'affichera -

Edit Button

Maintenant, nous allons mettre à jour le nom CakePHP mettre à jour un enregistrement en CakePHP mettre à jour un enregistrement123 et soumettre les détails. L'écran suivant affiché sera le suivant −

CakePHP mettre à jour un enregistrement

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn