Wenn ich Form zu Formularklasse bewegen Ich habe Problem mit der Anzeige mein neues Formular, und ich habe nicht wirklich eine Ahnung, was Sie können, Ich tue, um diese Probleme zu bewältigen.Methode xyz für Objekt „Symfony Component Formular Formview“ existiert nicht
Ich benutze Symfony 3.0.4. und ich denke, dass ich alles von Symfony-Dokumentation und Tipps von StackOverFlow traf, aber viele dieser Daten stammen von Symfony 2.x.
Methode "save" für das Objekt "Symfony \ Component \ Formular \ Formview" existiert nicht in FlexPMUsersBundle: Standard: register.html.twig in Zeile 8 500 Internal Server Error - Twig_Error_Runtime
ich habe 4 Dateien:
src/FlexPM/UsersBundle/Ressourcen/Ansichten/Default/register.html.twig
{% extends 'base.html.twig' %}
{% block body %}
<div>
Test
{{ form_start(formRegister) }}
{{ form_errors(formRegister) }}
{{ form_row(formRegister.save) }}
{{ form_end(formRegister) }}
</div>
{% endblock %}
src/FlexPM/UsersBundle/Controller/DefaultController.php
<?php
namespace FlexPM\UsersBundle\Controller;
use FlexPM\UsersBundle\Form\Type\UserRegister;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use FlexPM\UsersBundle\Entity\Users;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
class DefaultController extends Controller
{
/**
* @Route("/register")
*/
public function registerAction(Request $request)
{
$newUser = new Users();
$newUser->setEmail('[email protected]');
$newUser->setPassword('1234');
$newUser->setPermissions(1);
$newUser->setCreateDate(time());
$formRegister = $this->createForm(UserRegister::class, $newUser);
$formRegister->handleRequest($request);
if($formRegister->isSubmitted() && $formRegister->isValid()){
return $this->redirectToRoute('homepage');
}
return $this->render('FlexPMUsersBundle:Default:register.html.twig', array(
'formRegister' => $formRegister->createView(),
));
}
}
src/FlexPM/UsersBundle/Form/Typ/UserRegister.php
<?php
// src/FlexPM/Form/Type/UserRegister.php
namespace FlexPM\UsersBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\OptionsResolver\OptionsResolver;
class UserRegister extends AbstractType
{
public function registerForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('Save', SubmitType::class)
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'FlexPM\UsersBundle\Entity\Users',
));
}
}
src/FlexPM/UsersBundle/Entity/users.php
<?php
namespace FlexPM\UsersBundle\Entity;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Users
*/
class Users
{
/**
* @var integer
*/
private $id;
/**
* @var string
* @Assert\NotBlank()
* @Assert\Email(
* message = "The email '{{ value }}' is not a valid email.",
* checkMX = true
*)
*/
private $email;
/**
* @var string
*/
private $name;
/**
* @var string
* @Assert\NotBlank()
* @Assert\Length(
* min = 8,
* max = 50,
* minMessage = "Your password must be at least {{ limit }} characters long",
* maxMessage = "Your password cannot be longer than {{ limit }} characters"
*)
*/
private $password;
/**
* @var integer
*/
private $permissions;
/**
* @var \DateTime
*/
private $createDate;
/**
* @var \DateTime
*/
private $lastLogin;
/**
* @var string
*/
private $userCookie;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set email
*
* @param string $email
*
* @return Users
*/
public function setEmail($email)
{
$this->email = $email;
return $this;
}
/**
* Get email
*
* @return string
*/
public function getEmail()
{
return $this->email;
}
/**
* Set name
*
* @param string $name
*
* @return Users
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set password
*
* @param string $password
*
* @return Users
*/
public function setPassword($password)
{
$this->password = $password;
return $this;
}
/**
* Get password
*
* @return string
*/
public function getPassword()
{
return $this->password;
}
/**
* Set permissions
*
* @param integer $permissions
*
* @return Users
*/
public function setPermissions($permissions)
{
$this->permissions = $permissions;
return $this;
}
/**
* Get permissions
*
* @return integer
*/
public function getPermissions()
{
return $this->permissions;
}
/**
* Set createDate
*
* @param \DateTime $createDate
*
* @return Users
*/
public function setCreateDate($createDate)
{
$this->createDate = $createDate;
return $this;
}
/**
* Get createDate
*
* @return \DateTime
*/
public function getCreateDate()
{
return $this->createDate;
}
/**
* Set lastLogin
*
* @param \DateTime $lastLogin
*
* @return Users
*/
public function setLastLogin($lastLogin)
{
$this->lastLogin = $lastLogin;
return $this;
}
/**
* Get lastLogin
*
* @return \DateTime
*/
public function getLastLogin()
{
return $this->lastLogin;
}
/**
* Set userCookie
*
* @param string $userCookie
*
* @return Users
*/
public function setUserCookie($userCookie)
{
$this->userCookie = $userCookie;
return $this;
}
/**
* Get userCookie
*
* @return string
*/
public function getUserCookie()
{
return $this->userCookie;
}
}
Haben Sie eine Idee, was kann ich tun?
--- --- SOLUTIONS:
src/FlexPM/UsersBundle/Form/Typ/UserRegister.php
<?php
// src/FlexPM/Form/Type/UserRegister.php
namespace FlexPM\UsersBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\OptionsResolver\OptionsResolver;
class UserRegister extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('save', SubmitType::class)
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'FlexPM\UsersBundle\Entity\Users',
));
}
}
Die Fälle in Ihrem Typ und Zweig Vorlage stimmen nicht überein. 'speichern! == Speichern'. – qooplmao
Danke - Antwort von @Codezilla und Ihre Unterstützung lösen das Problem –