我对laravel5很新,这是我第一次使用MVC框架。我已经厌倦了阅读laravel文档,但仍然无法找到实现它的方法......
我想做一个级联下拉列表,如下面的链接:
可以从
下载和解压缩密码
buffernow.com1717
似乎它调用doAjax将参数传递给另一个php来执行查询,所以可能有3个其他的php来执行它..
我从谷歌搜索,它显示了一些jquery或js示例,但我不知道如何转换为Laravel(MVC结构)格式。
目前我只是创建刀片,控制器,模型,然后几乎整整一天。任何人都可以帮我指出我可以按照结构构建它的方式或资源,就像链接中的演示一样..?
感谢您的帮助。
答案 0 :(得分:0)
这样做的一种示例方式。
让我们说我们的国家和城市有App \ Country和App \ City模型。国家有许多城市。
两个控制器。 CountryController和CountryCityController。 我们想在CountryController中显示一个下拉列表,当用户选择一个国家/地区时,我们希望显示与该国家/地区相关的城市。
国家:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Country extends Model
{
public function cities()
{
return $this->hasMany(App\City::class)
->select("id", "city_id", "name");
}
}
CountryController:
<?php
namespace App\Http\Controllers;
use App\Country;
class CountryController extends Controller
{
public function index()
{
$countries = Country::select("id", "name")->get();
return \View::make("view")->with("countries", $countries);
}
}
城市:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class City extends Model
{
/**
* @return JSON
*/
public function country()
{
return $this->belongsTo(App\Country::class);
}
}
CountryCityController:
<?php
namespace App\Http\Controllers;
use App\Country;
class CountryCityController extends Controller
{
public function index($countryId)
{
return Country::whereId($countryId)->first()->cities;
// Or a better way:
return Country::findOrFail($countryId)->cities;
}
}
当用户选择国家/地区时,您会收听它,使用ajax转到CountryCityController @ index并添加生成第二个下拉列表的选项。
希望这是有道理的。
答案 1 :(得分:0)
亲爱的Hilmi Erdem KEREN:
很高兴你回答了我的问题,我已经有了基本的想法。非常感谢。并且因为我想创建3级级联下拉列表来显示与3级下拉列表记录匹配的数据,就像我选择CISB110(这是课程代码) - &gt;赋值(这是分类) - &gt; 1(这是classification_index),然后将通过Ajax显示匹配的记录。
我的数据库中有三个表:
course.table:
course_id course_code
1 CISB110
2 CISB210
classificaiton.table:
course_id classification_id classification_name
1 1作业
1 2测验
mark.table:
course_id classification_id classification_index mark
1 1 1 80
1 2 1 90
然后我按照你的结构然后我创建了这些:
CourseController(就像你的例子:国家)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Course;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class CourseController extends Controller
{
public function index()
{
$courses = Course::select("course_id", "coursen_code")->get();
return \View::make("marks-management")->with("courses", $courses);
}
}
CourseClassificationController :(喜欢城市)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Course;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class CourseClassificationController extends Controller
{
public function index($course_id)
{
return Country::findOrFail($course_id)->first()->classifications;
}
}
MarksManagementController:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\MarksManagement;
use App\Http\Controllers\Controller;
class MarksManagementController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
return view('marks-management');
}
}
和模特,
Course.php:
class Course extends Model
{
public function classifications()
{
return $this->hasMany(App\Classification::class)
->select("course_id", "classification_id", "classification_name");
}
}
Classification.php:
class Classification extends Model
{
public function Course()
{
return $this->hasMany(App\Classification::class)
->select("classification_id", "classification_index_id", "classification_index_name");
return $this->belongsTo(App\Course::class);
}
}
Classification_index.php:
class Classification_index extends Model
{
public function Classification()
{
return $this->belongsTo(App\Classification::class);
}
}
MarksManagement.php
class MarksManagement extends Model
{
protected $table = 'mark';
public $timestamps = false;
}
观点,
马克 - management.blade.php
@extends('app')
@section('content')
<div>
<p>
<b>Course Code: </b>
<select name="course_code" id="course_code" onChange="">
<option value="">Please select:</option></select>
<b>Classification: </b>
<select name="classification_name" id="classification_name" disabled="disabled" onChange="">
<option value="">Please select:</option></select>
<b>Classification Index:</b>
<select name="classification_index" id="classification_index" disabled="disabled" onChange="showOutput();">
<option value="">Please select:</option></select>
</p>
<div id="output"></div>
</div>
<script type="text/javascript">
function showOutput(){
alert("The mark is: " + '';
}
</script>
@endsection
和routes.php
Route::group(['middleware' => 'web'], function () {
Route::auth();
Route::get('/marks-management','MarksManagementController@index');
});
我知道有很多错误,并且遗漏了一些重要内容,但我真的想学习并知道如何在Laravel5中应用带有获取数据库记录的Ajax级联下拉列表。感谢您耐心观看我的愚蠢代码......如果您感到自由,我想更多地倾听您的建议。