ビューのリストを表示する例とともに、詳細な噛み砕かれたドキュメントがあります。 もっと実用的な形にしましょう。
1.重複を削除します。
2.レイアウトのビューとメインビューを分離します。
3. Idea APIへのリンクを作成します。
ご存知のように、「ミニパネル」のgetSummary関数によって表示されるリンクをクリックすると、 getDetail関数に渡されたコンテンツを含むパネルが表示されます 。 簡潔にするために、彼女のコードを示します。
public function getDetail() { $rootDir = Yii::getAlias('@app'); $rootDir = dirname($rootDir); //remove last dir $viewsNormal = []; $viewsLayout = []; //$this->data = array_unique($this->data); //if delete duplicates foreach ($this->data as $view) { $viewFile = str_replace($rootDir.DIRECTORY_SEPARATOR, '', $view); if (strpos($viewFile, 'layouts') !== false) { $viewsLayout[$viewFile]++; } else { $viewsNormal[$viewFile]++; } } //Display $js = <<<JS function _openIDE(elem){ var xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", "http://localhost:63342/api/file?file=" + elem.innerHTML, true); xmlhttp.send(); } JS; $content = "<script>$js</script>"; $content .= 'Views:<ol>'; foreach ($viewsNormal as $v => $count) { $content .= '<li>' . $this->link2IDE($v) . ($count > 1 ? " ($count)" : '') . '</li>'; } $content .= '</ol>'; $content .= '<hr>on layout:<ol>'; foreach ($viewsLayout as $v => $count) { $content .= '<li>' . $this->link2IDE($v) . ($count > 1 ? " ($count)" : '') . '</li>'; } $content .= '</ol>'; return $content; }
「標準リンク」(オプション1)を作成すると、ブラウザに新しい空白のウィンドウが開きます。 そのため、別個のJS関数が作成されました。
private function link2IDE($linkFile) { //Variant 1 //$port = '63342'; //return Html::a($linkFile, "http://localhost:$port/api/file?file=$linkFile&line=1", ['target' => '_top']); //Variant 2 return "<a href='#' onclick='_openIDE(this);return false;'>$linkFile</a>"; }
その結果、このようなフォームが判明し、リンクをクリックすると、バウチャーの最初の行がIDEで開きます(intellij、IDEAがあり、PHPStormでも動作するはずです):
考えられる質問を予測する:
- ポートがビジーの場合(たとえば、RubyMineが回転している場合):IDE設定(上の写真)およびコードでポートを変更する必要があります。
- 表示コードは、例を単純化するために1つの関数で具体的に提供されています。 通常のように、別のボックスに取り出すことができます(またそうすべきです):
return Yii::$app->view->render('@app/components/panels/views/auc/detail', [ 'data' => $this->data, ]);
- そして、はい、私はそのようなことがあることを知っています。 しかし、尊敬されているSamDarkのコメントから判断すると、彼らがこのことを見たとき、彼らはAPIを知らなかった。
- どこに行けばよいかがわかっている場合は、行と列を明示的に指定できます。&line = 97&column = 52
PS:私たち自身は地元ではないので、個人的なエラー