Чтобы обновить запись в базе данных, нам сначала нужно получить таблицу, используя класс TableRegistry . Мы можем извлечь экземпляр из реестра, используя метод get () . Метод get () примет имя таблицы базы данных в качестве аргумента. Теперь этот новый экземпляр используется для получения конкретной записи, которую мы хотим обновить.
Вызовите метод get () для этого нового экземпляра и передайте первичный ключ, чтобы найти запись, которая будет сохранена в другом экземпляре. Используйте этот экземпляр для установки новых значений, которые вы хотите обновить, а затем, наконец, вызовите метод save () с экземпляром класса TableRegistry для обновления записи.
пример
Внесите изменения в файл config / rout.php, как показано в следующем коде.
конфиг / routes.php
<?php use Cake\Core\Plugin; use Cake\Routing\RouteBuilder; use Cake\Routing\Router; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { $routes->connect('/users/edit', ['controller' => 'Users', 'action' => 'edit']); $routes->fallbacks('DashedRoute'); }); Plugin::routes();
Создайте файл UsersController.php в src / Controller / UsersController.php . Скопируйте следующий код в файл контроллера.
SRC / контроллер / 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->data('username'); $password = $this->request->data('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); } } } ?>
Создайте каталог Users в src / Template , игнорируйте, если он уже создан, и в этом каталоге создайте представление с именем index.ctp . Скопируйте следующий код в этот файл.
SRC / Template / Users / index.ctp
<a href = "add">Add User</a> <table> <tr> <td>ID</td> <td>Username</td> <td>Password</td> <td>Edit</td> <td>Delete</td> </tr> <?php foreach ($results as $row): echo "<tr><td>".$row->id."</td>"; echo "<td>".$row->username."</td>"; echo "<td>".$row->password."</td>"; echo "<td><a href = '".$this->Url->build (["controller" => "Users","action" => "edit",$row->id]). "'>Edit</a></td>"; echo "<td><a href = '".$this->Url->build (["controller" => "Users","action" => "delete",$row->id]). "'>Delete</a></td></tr>"; endforeach; ?> </table>
Создайте другой файл View в каталоге Users с именем edit.ctp и скопируйте в него следующий код.
SRC / Template / Users / edit.ctp
<?php echo $this->Form->create("Users",array('url'=>'/users/edit/'.$id)); echo $this->Form->input('username',['value'=>$username]); echo $this->Form->input('password',['value'=>$password]); echo $this->Form->button('Submit'); echo $this->Form->end(); ?>
Выполните приведенный выше пример, перейдя по следующему URL-адресу и нажав на ссылку «Изменить», чтобы редактировать запись.
Http: // Localhost: 85 / CakePHP / пользователей
Выход
После посещения вышеуказанного URL-адреса и нажатия на ссылку «Изменить» вы получите следующий вывод, в котором можно редактировать запись.