マイコントローラ:symfonyのその他の機能の経路から使用パラメータ
**
* @Route("/", name="homepage")
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function indexAction(Request $request)
{
return $this->render('default/index.html.twig');
}
/**
* @Route("/title/{title}", name="Title")
* @param Request $request
* @param $title
* @return \Symfony\Component\HttpFoundation\Response
*/
public function TitleAction(Request $request, $title)
{
//Some DB calls to retrieve data with 'where .. = $title'
return $this->render('default/title.html.twig', array(
'title' => $title,
'results' => $results[0],
'cs' => $cs,
'gs' => $gs,
...
}
}
/**
* @param Request $request
* @return JsonResponse
*/
public function updateDataAction(Request $request)
{
//Here I also want to use $title so I can use it in my query
$dataCS = $request->get('inputCS');
$dataGS = $request->get('inputGS');
if(!empty($dataGS) and !empty($dataCS)) {
// $results = Query
}
else {
// $results = Query
}
return new JsonResponse(array('results' => $results[0]));
}
script.jsマイAJAX呼び出し:
$(document).ready(function() {
$("#filter1").change(function() {
var inputCS = $(this).val();
if(inputCs.length >= 1) {
var data = {inputCS: inputCS};
$.ajax({
type: "POST",
url: ROOT_URL + "default/update/data",
data: data,
dataType: 'json',
timeout: 3000,
success: function(results){
//some innerHTML replacements
if(result.low === null) {
document.getElementById("low").innerHTML = 'N/A'
}
else {
document.getElementById("low").innerHTML =
Math.floor(Number(result.result.low));
}
},
error: function() {
//
}
})
}
});
})
マイ小枝: フィルタ:
<select id="filter1">
<option selected disabled>Choose</option>
{% for c in cs %}
<option value="{{ c.name }}">{{ c.name }}</option>
{% endfor %}
</select>
<select id="filter2">
<option selected disabled>Choose</option>
{% for g in gs %}
<option value="{{ g.name }}">{{ g.name }}</option>
{% endfor %}
</select>
結果が使用される場所:
{% if results.low != 0 %}
<p class="amount" id="low">{{ results.low|round(0, 'floor') }}</p>
{% else %}
<p class="amount">N/A</p>
{% endif %}
ビット背景情報:関数TitleActionを使用して、ルート(タイトル/ {タイトル})からの値に基づいて、いくつかの結果を表示します(一部のDB呼び出しの助けを借りて)where
句)。このページでは、2つのフィルタを使用して、ページに表示される結果をフィルタリングすることができます。フィルタがトリガされると(値が選択されたとき)、私はupdateDataAction関数のAJAXコールを実行して、特定のDBコールを再度実行しますが、余分なwhere
句とフィルタを値として使用します。私は、AJAX呼び出しにJSONの応答でフィルタリングされた結果セットを返します。成功すると、元の値にいくつかのinterHTMLの置き換えが行われます。
私の質問は次のとおりです。ルート(title/{title})から同じ値{title}を渡したり使用したりするにはどうすればよいですか。
この機能でも@route
注釈を使用しようとしましたが、結果がなく、$request->query...
も役に立ちませんでした。
あなたのJSにあなたが持っている '成功:関数は、(結果は){'が、その後result.low'と '' result.result.low'を参照してください - 私はこれがちょうどあなたが間違った変数名であなたのコードの実際のエラーではなく、質問から除外したいくつかのコードのためだと仮定しますか? – duncan
これは正しい – Rafie