我在Symfony上创建了一个表单,我收到了以下错误:
解析错误:语法错误,意外'类' (T_CLASS),期待标识符(T_STRING)或变量(T_VARIABLE)或' {'或者' $'在第39行的C:\ wamp \ www \ estore \ src \ Estore \ AdminBundle \ Controller \ AdminController.php中。
第39行是:
namespace Estore\AdminBundle\Controller;
use Estore\AdminBundle\Entity\Categories;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
class AdminController extends Controller
{
/**
* @Route("/admin/index")
*/
public function indexAction()
{
return new Response("Testing Routing on Admin Bundle to go to sleep");
}
/**
* @Route("/admin/createcategories")
*/
public function createCategoriesAction(Request $request)
{
$categories = new Categories();
$form = $this->createFormBuilder($categories)
->add('category', TextType::class)
->add('description', TextType::class)
->add('save', SubmitType::class, array('label' => 'Create Category'))
->getForm();
return $thi->render('EstoreAdminBundle:Default:create_category.html.twig', array(
'form' => $form->createView(),
));
}
}
完整代码:
Stack Trace
in src\Estore\AdminBundle\Controller\AdminController.php at line 39 -
$categories = new Categories();
$form = $this->createFormBuilder($categories)
->add('category', TextType::class)
->add('description', TextType::class)
->add('save', SubmitType::class, array('label' => 'Create Category'))
->getForm();
at Composer\Autoload\includeFile ()
in vendor\composer\ClassLoader.php at line 301
at ClassLoader ->loadClass ()
at ReflectionClass ->__construct ()
in vendor\symfony\symfony\src\Symfony\Component\Routing\Loader\AnnotationDirectoryLoader.php at line 52
at AnnotationDirectoryLoader ->load ()
这里是Stack Trace信息的一部分:
function initialize() {
var mapProp = {
center : center,
zoom : 5,
mapTypeId : google.maps.MapTypeId.ROADMAP
};
map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
google.maps.event.addListener(map, "click", function (event) {
alert('You click the map!');
});
}
我正在使用从两台计算机检出的git存储库。在其中一个我没有这个问题。它们之间的区别是具有上述错误的计算机在wamp上运行PHP版本5.4.26。 Symfony版本2.8.4-DEV - app / dev / debug
答案 0 :(得分:0)
我认为问题是由于php版本
使用class作为常量的名称仅在PHP 5.5中可用。
要获取班级名称,您应该使用TextType::class
或get_class(new TextType)
替换->add('category', 'text')
。
答案 1 :(得分:0)
:: class仅从PHP 5.5开始支持。
这是Symfony Upgrade md文件的引用,在升级到Symfony 3或将php升级到5.5之前,请使用' text'而不是FQCN的实施。
不推荐使用类型名称,将在Symfony 3.0中删除。您应该使用完全限定的类名(FQCN)来引用它们,而不是按名称引用类型。使用PHP 5.5或更高版本,您可以使用"类"不变的那样:
这将解决您的问题:
->add('category', 'text')
答案 2 :(得分:0)
其他答案是正确的,需要php> = 5.5才能使::class
正常工作。与他们相反,我更喜欢使用
->add('category', 'Symfony\Component\Form\Extension\Core\Type\TextType')
这样FQCN已经存在。当您升级到php> = 5.5和/或Symfony 3.0时,这将继续工作,不需要更新。
答案 3 :(得分:0)
返回 $ thi->呈现(' EstoreAdminBundle:默认:create_category.html.twig&#39 ;, 阵列( '形式' => $形式 - > CreateView的(), ));
$this->render