2017-08-28 32 views
0
**DefaultController.php** 

這是我DefaultController.php文件我要加以簡單的登錄頁面symfony的 我想,以顯示與我在控制器中提到的名字打招呼,普萊舍指引,我在symfony的是新的。控制器必須返回一個響應(null給出)。你忘了在控制器的某個地方添加一個return語句嗎?請

<?php 

namespace AppBundle\Controller; 
use AppBundle\Entity\users; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\RedirectResponse; 
use Symfony\Component\HttpFoundation\Response; 




class DefaultController extends Controller 
{ 

    /** 
    * @Route("/login", name="login") 
    */ 

    public function loginAction(Request $request) 
    { 

     if($request->getMethod()=='POST'){ 
      $username=$request->get('username'); 
      $password=$request->get('password'); 

      $em=$this->getDoctrine()->getEntityManager(); 
      $repository=$em->getRepository('AppBundle:users'); 
      $user=$repository->findOneBy(array('userName'=>$username, 'password'=>$password)); 



     if($user) 
     { 
     return $this->render('default/login.html.twig', array('name' =>$user->getFirstName())); 
     } 
     } 
     else{ 
     return $this->render('default/login.html.twig'); 
     } 
    } 


} 


**login.html.twig** 

這是symfony的我的登錄頁面,要顯示名稱爲你好,我在您好提到{{名}}這條線,如有需要,請做一些修正。

<html> 
<head> 
{% block stylesheets %} 
<link rel="stylesheet" href="{{ asset('templates/css/1.css') }}"> 
{% endblock %} 
</head> 
<body> 


{% block container %} 

<div class="wrapper"> 
     <h2>Login User</h2>      
     <form class="form-sigin" method="POST" action="{{path('login')}}"> 
     <div><input type="text" name="user_name" class="txtbox" placeholder="User Name"></div> 
     <div><input type="password" name="password" class="txtbox" placeholder="Password"></div> 
     <div><input type="checkbox"><span>Remember</span></div> 
     <div><input type="submit" value="Log In" class="loginBtn"></div> 
     <div><span><a href="">Forgot Password</a></span></div> 
     </form> 
    </div> 
    {% if name is defined %} 
    <div class="alert-info fade in"> 
    <strong>Hello {{name}}</strong> 
    </div> 
    {% endif %} 
    {% endblock %} 
    </body> 
    </html> 

**users.php** 

<?php 

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

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

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

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

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


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

    /** 
    * Set userName 
    * 
    * @param string $userName 
    * 
    * @return users 
    */ 
    public function setUserName($userName) 
    { 
     $this->userName = $userName; 

     return $this; 
    } 

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

    /** 
    * Set firstName 
    * 
    * @param string $firstName 
    * 
    * @return users 
    */ 
    public function setFirstName($firstName) 
    { 
     $this->firstName = $firstName; 

     return $this; 
    } 

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

    /** 
    * 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; 
    } 
} 

回答

2

你有一個壞的壓痕,看問題..試試這個:

 if($request->getMethod()=='POST') 
    { 
     $username=$request->get('username'); 
     $password=$request->get('password'); 

     $em=$this->getDoctrine()->getEntityManager(); 
     $repository=$em->getRepository('AppBundle:users'); 
     $user=$repository->findOneBy(array('userName'=>$username, 'password'=>$password)); 

     if($user) 
     { 
      return $this->render('default/login.html.twig', array('name' =>$user->getFirstName())); 
     } else { 
      return $this->render('default/login.html.twig'); 
     } 
    } else{ 
     return $this->render('default/login.html.twig'); 
    } 

的問題是,你是POST請求內但ins't用戶,所以它不進入在任何回報裏面。

我添加了一個新的條件else在這種情況下返回。

我不知道是否該邏輯是你正確的,但問題是,

+0

先生感謝我的問題解決了,但我的任務沒有完成,你可以進一步幫助我對我的工作。 –

+0

這取決於什麼。對於新的任務,你可以打開例如:)一個新的問題,如果這個答案解決您的問題,接受它時,你可以幫助其他人與你同樣的問題,請@KumarPal –

+0

先生像使用會話和提交按鈕我的網頁會被重定向到後儀表板頁面。 –

相關問題