[英]Symfony2.6 - Service
我已经学习几个月了Symfony2。
我已经创建了一项服务。 当我在简单的控制器中使用它时,我没有问题。 当我在管理我的实体的控制器中使用它时,我遇到了问题。
我的服务是:
<?php
namespace Cours\BlogBundle\Services;
class Service1
{
public function creerSlug($texte)
{
$texte = transliterator_transliterate("Latin-ASCII; [:Punctuation:] Remove; Lower();", $texte);
$texte = preg_replace('/[-\s]+/', '-', $texte);
$texte = trim($texte, '-');
return $texte;
}
}
我的简单控制器是:
<?php
namespace Cours\BlogBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Cours\BlogBundle\Services\Service1;
class TestController extends Controller
{
public function indexAction()
{
$texte = "Le test du slug";
$service1 = $this->container->get('service1');
$texte = $service1->creerSlug($texte);
return $this->render('CoursBlogBundle:Test:index.html.twig', array('texte' => $texte));
}
}
管理我的实体的控制器的动作是:
public function ajouterAction(Request $request)
{
$rubrique = new Rubrique();
$form = $this->createForm(new RubriqueType(), $rubrique);
if ($request->isMethod('POST'))
{
$form->handleRequest($request);
if ($form->isValid())
{
$manager = $this->getDoctrine()->getManager();
$rubrique = $form->getData();
$texte = $rubrique->getTexte();
$service1 = $this->container->get('service1');
$slug = $serviceSlug->creerSlug($texte);
$slug = $rubrique->setSlug($slug);
$manager->persist($rubrique);
$manager->flush();
return $this->redirect($this->generateUrl('cours_blog_accueil'));
}
}
return $this->render('CoursBlogBundle:Rubrique:ajouter.html.twig', array('form' => $form->createView()));
}
我的观点告诉我,我的不能为空。
我认为我的动作有误,但我找不到。
有人帮我吗?
亲吻并非常感谢您
更改
$service1 = $this->container->get('service1');
$slug = $serviceSlug->creerSlug($texte);
至
$serviceSlug = $this->container->get('service1');
$slug = $serviceSlug->creerSlug($texte);
我建议注释/删除$rubrique = $form->getData(); $texte = $rubrique->getTexte();
$rubrique = $form->getData(); $texte = $rubrique->getTexte();
从ajouterAction
并手动设置文本(仅出于测试目的):
if ($form->isValid())
{
$manager = $this->getDoctrine()->getManager();
// $rubrique = $form->getData();
// $texte = $rubrique->getTexte();
$rubrique->setTexte('Some text');
$service1 = $this->get('service1');
$slug = $service1->creerSlug($rubrique->getTexte());
...
如果texte
,您可以在表单类型的texte
字段中设置一些验证,以防止输入无效值。
我也建议使用一些库( Cocur / Slugify是一个不错的选择),而不要自己处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.