使用Select2 Ajax进行Laravel Multi Select

时间:2018-05-03 18:15:46

标签: laravel many-to-many jquery-select2

我在Many To ManyPosts之间实施了Tags关系。我使用Select2 Ajax表示Multi Select,html由Spatie/HTML包呈现。

在创建表单中,我可以选择标签,同时数据库表更新成功。我也可以显示标签。

我在编辑表单中遇到问题。我使用相同的创建表单进行编辑,虽然早先附加了标签我看不到那些被选中。这是什么解决方案。下面提到了一些代码。

表格

{{ html()->multiselect('tags_list', '', $posts->tags->pluck('id')->toArray())->class('form-control select2-tags')) }}

型号:

public function tags() { return $this->belongsToMany('App\Models\Tag'); }

1 个答案:

答案 0 :(得分:0)

以下代码有效,但有没有更好的解决方案?可能是通过模型?

import android.app.Dialog; import android.support.annotation.NonNull; import android.support.v7.app.AlertDialog; import android.support.v4.app.DialogFragment; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; public class CreateCityDialog extends DialogFragment { public interface NewCityHandler { void onNewCityCreated(String cityName); } private NewCityHandler newCityHandler; private EditText etName; @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof NewCityHandler) newCityHandler = (NewCityHandler) context; else throw new RuntimeException("Error"); } @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle("Add new city"); View rootView = getActivity().getLayoutInflater().inflate(R.layout.activity_create_city_dialog, null); etName = rootView.findViewById(R.id.etName); builder.setView(rootView); builder.setPositiveButton("Add", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); return super.onCreateDialog(savedInstanceState); } @Override public void onResume() { super.onResume(); final AlertDialog d = (AlertDialog) getDialog(); if (d != null) { Button positiveButton = d.getButton(Dialog.BUTTON_POSITIVE); positiveButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!TextUtils.isEmpty(etName.getText())) { newCityHandler.onNewCityCreated(etName.getText().toString()); d.dismiss(); } else { etName.setError("Empty field"); } } }); } } }