2017-08-18 19 views
1

データベースには示されていないファイルをアップロードStudentController.php名前、年齢と

私はsymfonyの画像タスクをアップロードしていますが、私のデータベースは、これらの項目を表示しませんではないが、私のプログラムは、Web \アップロードに保存されている適切かつ画像働い\写真。

これは、いずれかがこの問題を解決するために助けることができる私のStudentController.phpです。

<?php 
namespace AppBundle\Controller; 

use AppBundle\Entity\Student; 
use AppBundle\Form\FormValidationType; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 

use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\Form\Extension\Core\Type\TextType; 
use Symfony\Component\Form\Extension\Core\Type\FileType; 
use Symfony\Component\Form\Extension\Core\Type\SubmitType; 

class StudentController extends Controller {  
    /** 
     * @Route("/student/new") 
    */ 
    public function newAction(Request $request) { 
     $student = new Student(); 
     $form = $this->createFormBuilder($student) 
     ->add('name', TextType::class) 
     ->add('age', TextType::class) 
     ->add('photo', FileType::class, array('label' => 'Photo (png, jpeg)')) 
     ->add('save', SubmitType::class, array('label' => 'Submit')) 
     ->getForm(); 

     $form->handleRequest($request); 
     if ($form->isSubmitted() && $form->isValid()) { 
     $file = $student->getPhoto(); 
     $fileName = md5(uniqid()).'.'.$file->guessExtension(); 
     $file->move($this->getParameter('photos_directory'), $fileName); 
     $student->setPhoto($fileName); 
     return new Response("User photo is successfully uploaded."); 
     } else { 
     return $this->render('student/new.html.twig', array( 
      'form' => $form->createView(), 
     )); 
     } 
    } 
} 


**Student.php** 

これは私がここに1.名前2.年齢3.写真 を3つのフィールドを集約したが、MySQLは私にすべての更新を表示しません、私のエンティティクラスファイルです。 enter image description hereenter image description here、私のファイルが正常にアップロードが、データベースあなたはDB内のオブジェクトを永続化し、フラッシュする教義エンティティマネージャを使用する必要が

<?php 

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 



/** 
* Student 
* 
* @ORM\Table(name="student") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\StudentRepository") 
*/ 
class Student 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="name", type="string", length=255) 
    */ 
    private $name; 

    /** 
    * @var int 
    * 
    * @ORM\Column(name="age", type="integer") 
    */ 
    private $age; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="photo", type="string", length=255) 
    */ 
    private $photo; 


    /** 
    * Get id 
    * 
    * @return int 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set name 
    * 
    * @param string $name 
    * 
    * @return Student 
    */ 
    public function setName($name) 
    { 
     $this->name = $name; 

     return $this; 
    } 

    /** 
    * Get name 
    * 
    * @return string 
    */ 
    public function getName() 
    { 
     return $this->name; 
    } 

    /** 
    * Set age 
    * 
    * @param integer $age 
    * 
    * @return Student 
    */ 
    public function setAge($age) 
    { 
     $this->age = $age; 

     return $this; 
    } 

    /** 
    * Get age 
    * 
    * @return int 
    */ 
    public function getAge() 
    { 
     return $this->age; 
    } 

    /** 
    * Set photo 
    * 
    * @param string $photo 
    * 
    * @return Student 
    */ 
    public function setPhoto($photo) 
    { 
     $this->photo = $photo; 

     return $this; 
    } 

    /** 
    * Get photo 
    * 
    * @return string 
    */ 
    public function getPhoto() 
    { 
     return $this->photo; 
    } 
} 




**new.html.twig** 


{% extends 'base.html.twig' %} 
{% block javascripts %} 
    <script language = "javascript" src = "https://code.jquery.com/jquery-2.2.4.min.js"></script> 
{% endblock %} 
{% block stylesheets %} 
    <style> 
     #simpleform { 
     width:600px; 
     border:2px solid grey; 
     padding:14px; 
     } 
     #simpleform label { 
     font-size:12px; 
     float:left; 
     width:300px; 
     text-align:right; 
     display:block; 
     } 
     #simpleform span { 
     font-size:11px; 
     color:grey; 
     width:100px; 
     text-align:right; 
     display:block; 
     } 
     #simpleform input { 
     border:1px solid grey; 
     font-family:verdana; 
     font-size:14px; 
     color:grey; 
     height:24px; 
     width:250px; 
     margin: 0 0 20px 10px; 
     } 
     #simpleform button { 
     clear:both; 
     margin-left:250px; 
     background:grey; 
     color:#FFFFFF; 
     border:solid 1px #666666; 
     font-size:16px; 
     } 
    </style> 
{% endblock %} 
{% block body %} 
    <h3>Student form</h3> 
    <div id="simpleform"> 
     {{ form_start(form) }} 
     {{ form_widget(form) }} 
     {{ form_end(form) }} 
    </div> 
{% endblock %} 


parameters: photos_directory: '%kernel.root_dir%/../web/uploads/photos' 

答えて

1

を更新していません。

$entityManager->persist($yourEntity); 
$entityManager->flush($yourEntity); 

ドクトリンとフォームについてのsymfonyのドキュメントを読むことをお勧めします。

お使いのコントローラのアクションが固定あり:

<?php 
class StudentController extends Controller {  
    /** 
     * @Route("/student/new") 
    */ 
    public function newAction(Request $request) { 
     $student = new Student(); 
     $form = $this->createFormBuilder($student) 
     ->add('name', TextType::class) 
     ->add('age', TextType::class) 
     ->add('photo', FileType::class, array('label' => 'Photo (png, jpeg)')) 
     ->add('save', SubmitType::class, array('label' => 'Submit')) 
     ->getForm(); 

     $form->handleRequest($request); 
     if ($form->isSubmitted() && $form->isValid()) { 
     $file = $student->getPhoto(); 
     $fileName = md5(uniqid()).'.'.$file->guessExtension(); 
     $file->move($this->getParameter('photos_directory'), $fileName); 
     $student->setPhoto($fileName); 
     $em = $this->getManager()->getDoctrine(); 
     $em->persist($student); 
     $em->flush(); 
     return new Response("User photo is successfully uploaded."); 
     } else { 
     return $this->render('student/new.html.twig', array( 
      'form' => $form->createView(), 
     )); 
     } 
    } 
} 
+0

たくさんの感謝のその作業 –

+0

あなたの問題が解決した場合は答えとして、あなたの質問をマークしてくださいは、 – user3244171