Laravel动态下拉菜单国家和州 [英] Laravel dynamic dropdown country and state
本文介绍了Laravel动态下拉菜单国家和州的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试制作两个下拉菜单。这些是从我的数据库中选择的国家和州。我的问题是不知道如何创造国家必须依赖国家的条件。当我选择[Country Name]时,它将在我的下拉列表中给出不同的州名称选择。到目前为止我所做的一切。
AdminController.php
public function user_register()
{
$countryname = DB::table('countries')
->get();
$statename = DB::table('states')
->get();
$title = ucwords(Lang::get('constants.user') . ' ' . Lang::get('constants.register'));
return View::make('register.user_register')
->with('title', $title)
->with('page', 'user_register')
->with('countryname', $countryname)
->with('statename', $statename)
}
user_register.blade.php
<select class="form-control" id="countries" name="countries">
<option value="">Please select</option>
<?php foreach ($countryname as $key=>$countryname): ?>
<option value="<?php echo $countryname->sortname; ?>"<?php
if (isset($countries) && Input::old('countries') == $countryname->sortname)
{
echo 'selected="selected"';
}
?>>
<?php echo $countryname->sortname ." - ". $countryname->name ; ?>
</option>
<?php endforeach; ?>
</select>
<select class="form-control" id="states" name="states">
<option value="">Please select</option>
<?php foreach ($statename as $key=>$statename): ?>
<option value="<?php echo $countryname->name; ?>" <?php
if (isset($states) && Input::old('states') == $statename->name)
{
echo 'selected="selected"';
}
?>>
<?php echo $statename->name; ?></option>
<?php endforeach; ?>
</select>
在我的数据库中
表:国家
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| country_id| int(11) | NO | PRI | NULL | auto_increment |
| sortname | varchar(3) | NO | | NULL | |
| name | varchar(150) | NO | | NULL | |
| phonecode | int(11) | NO | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
表:状态
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| country_id | int(11) | NO | | NULL | |
+------------+------------------+------+-----+---------+----------------+
推荐答案
下面介绍如何在Laravel中执行动态下拉:
免责声明:我没有对此进行测试,但它应该可以工作。欢迎发表评论,我会更新🙏您可以在这里看到它的工作原理演示https://www.dronejobs.co/
app/Http/Controllers/HomeController.php
<?php
namespace AppHttpControllers;
use App{Country, State};
class HomeController extends Controller
{
public function index()
{
return view('home', [
'countries' => Country::all(),
'states' => State::all(),
]);
}
}
资源/视图/home.blade.php
<select name="country">
@foreach ($countries as $country)
<option value="{{ $country->id }}">{{ $country->name }}</option>
@endforeach
</select>
<select name="state">
@foreach ($states as $state)
<option value="{{ $state->id }}">{{ $state->name }}</option>
@endforeach
</select>
<script>
$(function() {
$('select[name=country]').change(function() {
var url = '{{ url('country') }}' + $(this).val() + '/states/';
$.get(url, function(data) {
var select = $('form select[name= state]');
select.empty();
$.each(data,function(key, value) {
select.append('<option value=' + value.id + '>' + value.name + '</option>');
});
});
});
});
</script>
app/Country.php
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Country extends Model
{
public function states()
{
return $this->hasMany('AppState');
}
app/State.php
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
Class State extends Model
{
public function country()
{
return $this->belongsTo('AppCountry');
}
routes/web.php
Route::get('country/{country}/states', 'CountryController@getStates');
app/Http/Controllers/CountryController.php
<?php
namespace AppHttpControllers;
use AppCountry;
class CountryController extends Controller
{
public function getStates(Country $country)
{
return $country->states()->select('id', 'name')->get();
}
}
这篇关于Laravel动态下拉菜单国家和州的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文