두 엔터티 Crawler
및 Customer
이 있습니다. Crawler
은 원격 URL에서 파싱 된 항목을 포함하고 Customer
은 Crawler
데이터의 수동으로 생성 된 항목을 포함합니다.관리자 클래스의 사전 작성 양식
나는 각각 CrawlerAdmin
과 CustomerAdmin
을 만들었습니다. 이제 새로운 Customer
항목을 만들려면 "고객 만들기"와 같은 CrawlerAdmin
목록보기에서 사용자 지정 작업을 원합니다. 버튼을 클릭하면 CustomerAdmin
작성보기가 선택된 Crawler
항목의 값이 미리 채워진 필드와 함께 표시되어야합니다.
어떻게 이런 종류의 결과를 낼 수 있습니까?
편집 : 가능한 대안으로, 사용자 지정 CRUDController에서 "복제본"기능을 만들었습니다. Crawler
항목을 가져 와서 새로운 Customer
항목을 자동으로 만듭니다. 그런 다음 새로 생성 된 Customer
항목의 편집보기로 리디렉션해야합니다.
사용자 지정 Contoller에서 새로 만든 항목의 ID로 CustomerAdmin
수정보기로 리디렉션하는 방법은 무엇입니까?
<?php
// src/CrawlerBundle/Controller/CRUDController.php
namespace CrawlerBundle\Controller;
use FrontendBundle\Entity\Customer;
use Sonata\AdminBundle\Controller\CRUDController as Controller;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
class CRUDController extends Controller
{
/**
* @param $id
* @return RedirectResponse
*/
public function cloneAction($id)
{
$object = $this->admin->getSubject();
if (!$object) {
throw new NotFoundHttpException'unable to find object');
}
$newObject = new Customer();
$newObject->setCompanyName($object->getCompanyName().' (Clone)');
$newObject->setRegisterNumber($object->getRegisterNumber().' (Clone)');
$newObject->setFields(array()); // ignore this
$this->admin->create($newObject);
$this->addFlash('sonata_flash_success', 'Cloned successfully');
// return new RedirectResponse($this->admin->generateUrl('list'));
// if you have a filtered list and want to keep your filters after the redirect
return new RedirectResponse($this->admin->generateUrl('list', array('filter' => $this->admin->getFilterParameters())));
// just redirects to the class list view
}
}
내 서비스 정의 : 당신이 더 많은 정보가 필요하면
crawler.admin.crawler:
class: CrawlerBundle\Admin\CrawlerAdmin
arguments: [~, CrawlerBundle\Entity\Crawler, CrawlerBundle:CRUD]
tags:
- { name: sonata.admin, manager_type: orm, group: admin, label: Crawler, pager_type: "simple" }
는 의견을주십시오
이는 컨트롤러입니다.
미리 감사드립니다.
당신은 당신의 생성 링크에 URL 매개 변수를 설정하고 그것으로()에의 getSubject을 설정하기 위해 사용자의 관리자의 configureFormFields 기능에 그것을 얻을 수 있습니다. – pbenard
예, 현재 Admin에 링크되어 있습니다. ( – Kapparina