2015-02-13 4 views
0

В настоящее время я разрабатываю форму в Laravel и имею небольшую проблему, которая обматывает мою голову вокруг всей модели MVC. Понимаете, мое приложение касается «задачи назначения» (вроде иронично, учитывая мое первое утверждение lol). Таким образом, у меня есть таблица в моей базе данных называется tblProblems заполнены так:Как заполнить множественный выбор в той же форме в Laravel

1 Problem1, cat1 
2 Problem2, cat2 
3 Problem3, cat1 
4 Problem4, cat2 
... 

Поля являются ProblemID, ProblemName и категории. У меня также есть таблица под названием tblCities, которая в основном таблица с двумя полями, CityID и CITYNAME, установки как это:

1 City1 
2 City2 
3 City3 
... 

Теперь то, что я хочу сделать, это на моей форме члена, я хотел бы установить три «выберите» элементы управления, в которых будут перечислены проблемы первой и второй категорий, а также список доступных городов.

Первое, что я сделал, чтобы создать две модели, как так:

class Problem extends Eloquent 
{ 

    protected $table = 'tblProblems'; 
    protected $primaryKey = 'ProblemID'; 
    public $timestamps = false; 

    public function getProblemsByCategory($cat) 
    { 
     return $this->where('Category', '=', $cat)->lists('ProblemName', 'ProblemID'); 
    } 
} 

class City extends Eloquent 
{ 
    protected $table = 'tblCities'; 
    protected $primaryKey = 'CityID'; 
    public $timestamps = false; 

    public function getAllCities() 
    { 
     return $this->orderBy('CityName', 'asc')->lists('CityName', 'CityID'); 
    } 
} 

Тогда, конечно, я пошел вперед и добавил соответствующие контроллеры к драке, как это:

class ProblemController extends BaseController 
{ 
    protected $problems; 

    public function __construct(Problem $problem) 
    { 
     $this->problems = $problem; 
    } 

    public function getProblemList($cat) 
    { 
     $problemList = $this->problems->getProblemsByCategory($cat); 
     return View::make('testProblem', $problemList); 
    } 
} 

class CityController extends BaseController 
{ 
    protected $city; 

    public function __construct(City $city) 
    { 
     $this->city = $city; 
    } 

    public function getCityList() 
    { 
     $cityList = $this->city->getAllCities(); 
     return View::make('testCity', $cityList); 
    } 
} 

Теперь я в основном застрял. У меня есть это в моем routes.php:

Route::get('member', function() 
{ 
    return View::make('memberForm'); 
}); 

Route::get('testProblem/{cat}', [email protected]); 
Route::get('testCity', [email protected]); 

Если я запускать мои маршруты вручную путем ввода правильного URL в браузере, я могу сказать, мой код работает как собственные переменные становятся доступными для моих взглядов тестов с правильным содержанием , Проблема в том, что я не могу понять, как сделать все три списка доступными для моего memberForm одновременно. Черт, я даже не могу понять, как сделать ОДИН из этих списков доступным для моего memberForm.

Может ли кто-нибудь мне помочь? Я знаю, что решение, вероятно, смотрит на меня прямо в лицо, но для моей жизни я не могу понять это.

Заранее спасибо.

ответ

1

Вместо того чтобы иметь маршрут и действие контроллера для каждого списка, вы просто хотите запустить запросы и передать результаты в вид формы. Что-то вроде этого:

Route::get('member', '[email protected]'); 

class MemberController extends BaseController { 

    public function showForm(){ 
     $problemsCat1 = $this->problems->getProblemsByCategory(1); 
     $problemsCat2 = $this->problems->getProblemsByCategory(2); 
     $cities = $this->city->getAllCitites(); 
     return View::make('memberForm', compact('problemsCat1', 'problemsCat2', 'cities')); 
    } 
} 

И затем использовать его в memberForm виде точно так же, как и любой PHP переменной:

$problemsCat1 
$problemsCat2 
$cities 
Смежные вопросы