Artikel ini dirunut berdasarkan Jobeet Tutorial, yang dibuat oleh Fabien Potencier, untuk Symfony 1.4.
Membuat class untuk admin
Class admin mereprensentasikan model untuk sesi administrasi. Langkah termudah adalah dengan melakukan ekstensi class dari admin bundlenya. Buat folder Admin di direktori Sonata\AdminBundle\Admin\Admin. Kemudian buat admin class untuk Job dan Category.src/Ibw/JobeetBundle/Admin/CategoryAdmin.php
namespace Ibw\JobeetBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Validator\ErrorElement;
use Sonata\AdminBundle\Form\FormMapper;
class CategoryAdmin extends Admin
{
// Your code will be here
}
========================
src/Ibw/JobeetBundle/Admin/JobAdmin.php
namespace Ibw\JobeetBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Validator\ErrorElement;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Show\ShowMapper;
use Ibw\JobeetBundle\Entity\Job;
class JobAdmin extends Admin
{
// Your code will be here
}
Sekarang harus menambahkan setiap class adminnya ke dalam services.yml
src/Ibw/JobeetBundle/Resources/config/services.yml
services:
ibw.jobeet.admin.category:
class: Ibw\JobeetBundle\Admin\CategoryAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: jobeet, label: Categories }
arguments:
- ~
- Ibw\JobeetBundle\Entity\Category
- 'IbwJobeetBundle:CategoryAdmin'
ibw.jobeet.admin.job:
class: Ibw\JobeetBundle\Admin\JobAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: jobeet, label: Jobs }
arguments:
- ~
- Ibw\JobeetBundle\Entity\Job
- 'IbwJobeetBundle:JobAdmin'
Konfigurasi class admin
Agar admin bundle dapat berjalan sesuai harapan kita harus melakukan konfigurasi di class admin yang kita buat:src/Ibw/JobeetBundle/Admin/CategoryAdmin.php
namespace Ibw\JobeetBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Validator\ErrorElement;
use Sonata\AdminBundle\Form\FormMapper;
class CategoryAdmin extends Admin
{
// setup the default sort column and order
protected $datagridValues = array(
'_sort_order' => 'ASC',
'_sort_by' => 'name'
);
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('name')
->add('slug')
;
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('name')
;
}
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('name')
->add('slug')
;
}
}
=====================================
src/Ibw/JobeetBundle/Admin/JobAdmin.php
namespace Ibw\JobeetBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Validator\ErrorElement;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Show\ShowMapper;
use Ibw\JobeetBundle\Entity\Job;
class JobAdmin extends Admin
{
// setup the defaut sort column and order
protected $datagridValues = array(
'_sort_order' => 'DESC',
'_sort_by' => 'created_at'
);
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('category')
->add('type', 'choice', array('choices' => Job::getTypes(), 'expanded' => true))
->add('company')
->add('file', 'file', array('label' => 'Company logo', 'required' => false))
->add('url')
->add('position')
->add('location')
->add('description')
->add('how_to_apply')
->add('is_public')
->add('email')
->add('is_activated')
;
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('category')
->add('company')
->add('position')
->add('description')
->add('is_activated')
->add('is_public')
->add('email')
->add('expires_at')
;
}
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('company')
->add('position')
->add('location')
->add('url')
->add('is_activated')
->add('email')
->add('category')
->add('expires_at')
->add('_action', 'actions', array(
'actions' => array(
'view' => array(),
'edit' => array(),
'delete' => array(),
)
))
;
}
protected function configureShowField(ShowMapper $showMapper)
{
$showMapper
->add('category')
->add('type')
->add('company')
->add('webPath', 'string', array('template' => 'IbwJobeetBundle:JobAdmin:list_image.html.twig'))
->add('url')
->add('position')
->add('location')
->add('description')
->add('how_to_apply')
->add('is_public')
->add('is_activated')
->add('token')
->add('email')
->add('expires_at')
;
}
}
Untuk menampilkan logo perusahaan dari Job di admin kita harus membuat file berikut:
src/Ibw/JobeetBundle/Resources/views/JobAdmin/list_image.html.twig
<tr>
<th>Logo</th>
<td><img src="{{ asset(object.webPath) }}" /></td>
</tr>
Sekarang kita sudah bisa melihat daftar job dan daftar categori
No comments:
Post a Comment