簡體   English   中英

輸入::具有if語句laravel中的單選按鈕值

[英]Input::has for radio button value in if statement laravel

因此,我在laravel項目的頁面中獲得了此表單,其中表單對URL進行了獲取請求。

<div class="col-sm-2 form-group">
    <div class="radio">
        <label><input name="BalanceType" type="radio" value="pos">
        Positiv</label>
    </div>
</div>

<div class="col-sm-2 form-group">
    <div class="radio">
        <label><input name="BalanceType" type="radio" value="neg">
        Negativ</label>
    </div>
</div>

<div class="col-sm-2 form-group">
    <div class="radio">
        <label><input name="BalanceType" type="radio" value="null">
        Noll</label>
    </div>
</div>

我已經理解,如果您要具有單選按鈕,則它們的名稱最好是相同的,但是如果要選中和取消選中其他按鈕,則它們的值應該不同。

現在,我使用單選按鈕的目的是過濾不同類型的用戶及其余額(如果為負,為正或為null)。

現在我試圖弄清楚我應該在控制器的if語句中寫些什么。 在我嘗試復選框並使用if(Input :: has('name'))之前,依此類推。 這有效,但這僅適用於具有不同名稱的復選框,現在我想使用單選按鈕。

我的問題是,如何檢查具有特定類型值的單選按鈕,是否像復選框和Input :: has一樣進行檢查?

我的控制器:

public function balanceCheck()
{
    $user = Auth::user();
    $users = Auth::user()->school->users()->orderBy('id', 'DESC')->get();


    if()
    {
        $users = Auth::user()->school->users()->where('balance', '>', 0)->orderBy('id', 'DESC')->get();
    }
    if()
    {
        $users = Auth::user()->school->users()->where('balance', '<', 0)->orderBy('id', 'DESC')->get();
    }
    if()
    {
        $users = Auth::user()->school->users()->where('balance', '=', 0)->orderBy('id', 'DESC')->get();
    }

    return View::make('admin.overview', ['user' => $user, 'users' => $users]);
}

提前致謝

如果您只想檢查單選按鈕的狀態,即檢查或不檢查,請像這樣嘗試

    if(isset($_POST['BalanceType'])){
        $radio_input=$_POST['BalanceType'];
        if($radio_input =="some value"){
         //do some thing.....
        }elseif($radio_input =="some other value"){
         //do some thing else.....
        }else{
              //the last condition goes here
             }
     }

像上面建議的一樣,您可以在控制器中進行簡單的檢查。 要更像Laravel風格,您可以做

$balanceType = Input::has('BalanceType') ? Input::get('BalanceType') : null;

if ($balanceType == 'pos') {
    $users = Auth::user()->school->users()->where('balance', '>', 0)->orderBy('id', 'DESC')->get();
} elseif ($balanceType == 'neg') {
    $users = Auth::user()->school->users()->where('balance', '<', 0)->orderBy('id', 'DESC')->get();
} elseif ($balanceType == 'null') {
    $users = Auth::user()->school->users()->where('balance', '=', 0)->orderBy('id', 'DESC')->get();
}

這應該可以滿足您的需求,但這絕對不是推薦的方法。 瞧,您的控制器很快就會看起來像一團糟。 使用所有這些if語句,檢查是否要執行該操作。 這不是控制器工作。 相反,您可以將需要完成的工作委托給其他一些可能更負責做的類。 例如,在Laravel世界中,通常有Repositories

將存儲庫視為與您的模型進行交互的類。 它可以執行不同的數據庫查詢並獲取您所需的任何內容,僅用一行代碼即可調用存儲庫類中的適當方法,從而使控制器保持整潔美觀。 更不用說,以后,如果您需要在應用的不同部分中進行完全相同的查詢,則可以重用存儲庫中的代碼。 例如,對於您的方案,您可能具有UserRepository類。

app/Repositories/UserRepository.php創建一個類

<?php

namespace Repositories;

class ArticleRepository
{

    /**
     * @var User
     */
    protected $model;

    /**
     * @param User $model
     */
    public function __construct(User $model)
    {
        $this->model = $model;
    }

    public function getByBalanceType($balanceType)
    {
         if (! $balanceType) return null;
if ($balanceType == 'pos') {
    $users = $this->model->school->users()->where('balance', '>', 0)->orderBy('id', 'DESC')->get();
} elseif ($balanceType == 'neg') {
    $users = $this->model->school->users()->where('balance', '<', 0)->orderBy('id', 'DESC')->get();
} elseif ($balanceType == 'null') {
    $users = $this->model->where('balance', '=', 0)->orderBy('id', 'DESC')->get();
}
        return $users;
    }
}

之后,您可以在控制器中將此存儲庫注入構造函數中。

public function __construct(UserRepository $userRepository)
{
    $this->userRepository = $userRepository;
}

然后,您的balanceCheck方法將看起來

public function balanceCheck()
{
    $user = Auth::user(); 
    $users = Auth::user()->school->users()->orderBy('id', 'DESC')->get();
     $balanceType = Input::has('BalanceType') ? Input::get('BalanceType') : null;
    $users = $this->userRepository->getByBalanceType($balanceType);
    return View::make('admin.overview', ['user' => $user, 'users' => $users]);
}

但是當然可以采用第一種方法,它可能更簡單,更易於使用且更清晰。 但是,一旦您維護具有大量功能的大型應用程序,便會很快意識到后一種方法的重要性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM