CakePHP - Bir Kaydı Güncelle
Veritabanındaki bir kaydı güncellemek için, önce bir tabloyu kullanarak tutmamız gerekir. TableRegistrysınıf. Örneği kayıttan çıkarabiliriz.get()yöntem. get()yöntem, veritabanı tablosunun adını bağımsız değişken olarak alır. Şimdi, bu yeni örnek, güncellemek istediğimiz belirli kaydı almak için kullanılır.
Ara get()yöntemini kullanın ve başka bir örnekte kaydedilecek olan bir kaydı bulmak için birincil anahtarı iletin. Güncellemek istediğiniz yeni değerleri ayarlamak için bu örneği kullanın ve ardından son olaraksave() yöntemi ile TableRegistry kaydı güncellemek için sınıfın örneği.
Misal
Aşağıdaki kodda gösterildiği gibi config / route.php dosyasında değişiklikler yapın.
config / route.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();
});
Oluşturmak UsersController.php dosya src/Controller/UsersController.php. Aşağıdaki kodu denetleyici dosyasında kopyalayın.
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);
}
}
}
?>
Bir dizin oluşturun Users at src/Template, önceden oluşturulmuşsa yoksay ve bu dizinin altında adlı bir görünüm oluşturun index.php. Aşağıdaki kodu o dosyaya kopyalayın.
src / Template / Kullanıcılar / index.php
<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>
Başka bir tane yarat View Kullanıcılar dizini altındaki dosya edit.php ve aşağıdaki kodu içine kopyalayın.
src / Template / Kullanıcılar / 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();
?>
Aşağıdaki URL'yi ziyaret ederek yukarıdaki örneği yürütün ve tıklayın Edit link kaydı düzenlemek için.
http: // localhost / cakephp4 / kullanıcılar
Çıktı
Yukarıdaki URL'yi ziyaret ettikten sonra, aşağıda gösterildiği gibi kullanıcılar tablosundaki kayıtları gösterecektir -
Düzenle düğmesine tıklayın ve aşağıdaki ekranı gösterecektir -
Şimdi, Virat adını Virat123 olarak güncelleyeceğiz ve detayları göndereceğiz. Bir sonraki görüntülenen ekran aşağıdaki gibi olacaktır -