با سلام خدمت کاربران گرامی سایت پی وی لرن و آن دسته از کاربرانی که به زبان PHP علاقه دارند. این دوره آموزش CakePHP مخصوص آن ها تهیه شده تا مهارت و تسلط خود را بر این زبان با یادگیری CakePHP به حد کمال برسانند و با کمک آن به یک برنامه نویس حرفه ای در عرصه PHP تبدیل شوند. در جلسه گذشته چگونه می توان رکورد های یک پایگاه داده را مشاهده کرد. در این جلسه و در ادامه کار با پایگاه داده در CakePHP به آموزش به روز رسانی یک رکورد در پایگاه داده می پردازیم.
برای به روز رسانی یک رکورد در پایگاه داده، ابتدا باید با استفاده از جدول TableRegistry یک table ایجاد نماییم.
می توان نمونه ای را از رجیستری با استفاده از ()get دریافت کرد.
روش ()get نام جدول پایگاه داده را به عنوان یک argument دریافت می کند.
حالا از این نمونه جدید برای به روز رسانی یک رکورد استفاده می نماییم.
روش ()get را با استفاده از نمونه جدید و کلید اصلی اقدام به پیدا کردن رکوردی می کند که قرار است در یک نمونه دیگر ذخیره شود.
از این نمونه برای تنظیم مقادیر جدید که می خواهید به روز رسانی نمایید استفاده کنید و سپس در آخر روش ()save را با استفاده از نمونه TableRegistry class’s به منظور به سانی رکورد فراخوانی نمایید.
تغییر زیر را در فایل config/routes.php همانطور که در کد زیر نشان داده است اعمال نمایید.
config/routes.php
1 2 3 4 5 6 7 8 9 10 11 | <?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(); |
یک فایل UserController.php را در src / Controller / UsersController.php ایجاد کنید سپس کد زیر را در فایل کنترل کننده کپی کنید.
src/controller/UsersController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?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 ایجاد نمایید اما اگر این دایرکتوری از قبل وجود دارد لازم به انجام این کار نیست.
در زیر آن دایرکتوری یک View file فراخوانی شده index.ctp بسازید و سپس کد زیر را در فایل کنترل کننده کپی نمایید.
src/Template/Users/index.ctp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <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 file دیگر در زیر Users دایرکتوری فراخوانی شده edit.ctp بسازید و سپس سپس کد زیر را در فایل کنترل کننده کپی نمایید.
src/Template/Users/edit.ctp
1 2 3 4 5 6 7 | <?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/users
پس از بازدید از URL بالا و کلیک روی پیوند Edit، خروجی زیر را که در آن میتوانید رکورد را ویرایش کنید دریافت خواهید کرد.
در این جلسه با آموزش به روز رسانی یک رکورد در پایگاه داده همراه شما بودیم.
جلسه بعدی به این مسئله می پردازیم که چطور می توان یک رکورد را در پایگاه داده حذف نمود.
با پی وی لرن همراه باشید.